本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理
原作者:jiet07
本文链接:https://blog.csdn.net/weixin_41603028/article/details/111499076
知识点1:Python 合法的标识符
参考链接:哪个不是python合法标识符
具体基础知识点如下:组合=字母+数字+下划线
- 第一个字符不能以数字开头。
- 从第二个字符开始可以是字母,数字和下划线。
- 大小写敏感。
- Python的保留关键字不能作为标识符。
具体关键字如下:
- 不建议使用python的内建名字集合当作标识符。
Python提供了keyword模块来查询关键字集合和判断一个字符串是否是python的关键字:
Python的合法标识符
下面这段代码可以让用户输入一个字符串,然后判断是否是合法的python标识符,如果不是继续输入,直到输入正确,程序退出。
主要利用知识点中的1,2,4来判断。
以下代码为python3,上述参考链接里面为python2。
import keywordimport stringdef is_valid_py_name(py_name): py_name = py_name.strip() if keyword.iskeyword(py_name):#判断关键字 print("'{0}' is a python keyword! It is a invalid letter!".format(py_name)) return False elif py_name == "":#判断空 print("empty input!") return False elif py_name[0] not in (string.ascii_letters+'_'):#判断第一个字母是否是以"-"或字母开头 print("'{0}' not start with _ or letter!".format(py_name)) return False else: for i in range(1,len(py_name)):#从第二字符开始,遍历字母(包括大小写)和数字 if py_name[i] not in (string.ascii_letters+'_'+string.digits): print("'{0}' is invalid letter!".format(py_name[i])) return False print("'{0}' is valid py name!".format(py_name)) return Trueif __name__ == "__main__": #is_valid = False #while not is_valid: while True: print("Please enter a string:") py_name = input() is_valid = is_valid_py_name(py_name)1234567891011121314151617181920212223242526272829303132
修改代码
python2 string.letters:包含所有字母(大写或小写)的字符串
Python 3中,string.ascii_letters.
例题:
逐个测试,测试结果如下。
知识点2:字典声明的办法总结
字典基本知识:
字典本身是可变数据类型,字典的键记住两点:
唯一:同一个字典中的键必须唯一,如果出现多个相同的键,则最新的键会被记住(也即值会被代替);
不可变:键是不可变数据类型,使用可以是int,string,float,tuple
Python中的数组可分为:元组tuple(a,b)不可变数据类型,列表list[a,b]可变数据类型,字典dict{a:b}值可以改变。
例题:
解题过程:
一个对象能被称为 hashable , 它必须有个 hash 值,这个值在整个生命周期都不会变化,而且必须可以进行相等比较,所以一个对象可哈希,它必须实现__hash__() 与 eq() 方法。
对于 Python 的内建类型来说,只要是创建之后无法修改的(immutable)类型都是 hashable 如字符串,可变动的都是 unhashable的比如:列表、字典、集合,他们在改变值的同时却没有改变id,无法由地址定位值的唯一性,因而无法哈希。我们自定义的类的实例对象默认也是可哈希的(hashable),而hash值也就是它们的id()。
“is测试”基于id()的值。
"==测试” 基于hash()的值。
实例:初始化字典,26个小写英文字母,从0到25.
私信小编01即可获取大量Python学习资料