python利用字典判断用户登录是否成功_Python之牛客网面试题解析

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

原作者:jiet07

本文链接:https://blog.csdn.net/weixin_41603028/article/details/111499076

知识点1:Python 合法的标识符

参考链接:哪个不是python合法标识符

具体基础知识点如下:组合=字母+数字+下划线

  1. 第一个字符不能以数字开头。
  2. 从第二个字符开始可以是字母,数字和下划线。
  3. 大小写敏感。
  4. Python的保留关键字不能作为标识符。

具体关键字如下:

5dfb7bad971e91b7df8c7b2d2de85d7c.png
  1. 不建议使用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
bcb03d894cd405bdb4aadba754af2135.png


修改代码
python2 string.letters:包含所有字母(大写或小写)的字符串
Python 3中,string.ascii_letters.

例题:

b53204e9eba85a33285dfebe5302adb9.png


逐个测试,测试结果如下。

25d6064077c6fa2308363ad89b15a338.png

知识点2:字典声明的办法总结

字典基本知识:

字典本身是可变数据类型,字典的键记住两点:

唯一:同一个字典中的键必须唯一,如果出现多个相同的键,则最新的键会被记住(也即值会被代替);
不可变:键是不可变数据类型,使用可以是int,string,float,tuple

Python中的数组可分为:元组tuple(a,b)不可变数据类型,列表list[a,b]可变数据类型,字典dict{a:b}值可以改变。

例题:

3775857b2c9acaf0985660c084b7d056.png

解题过程:

0abd54ced555199f7a1d4384dbd7176b.png

一个对象能被称为 hashable , 它必须有个 hash 值,这个值在整个生命周期都不会变化,而且必须可以进行相等比较,所以一个对象可哈希,它必须实现__hash__() 与 eq() 方法。

对于 Python 的内建类型来说,只要是创建之后无法修改的(immutable)类型都是 hashable 如字符串,可变动的都是 unhashable的比如:列表、字典、集合,他们在改变值的同时却没有改变id,无法由地址定位值的唯一性,因而无法哈希。我们自定义的类的实例对象默认也是可哈希的(hashable),而hash值也就是它们的id()。

7876120e7f9c413c6d82bc6cf781dc3e.png
1f1b2291f7f9cfe83c6468e97e54fbfb.png


“is测试”基于id()的值。

"==测试” 基于hash()的值。

实例:初始化字典,26个小写英文字母,从0到25.

3f626cf811e42e772ecbb533f10cda7e.png

私信小编01即可获取大量Python学习资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值