python

目录

get()方法的使用

sorted依照指定关键词排序


用键盘模拟用户输入,判断输入的用户名或密码是否正确,并输出登录信息。

如果输入的用户名存在,且密码正确,则输出success
如果输入的用户名存在,但密码不正确,则输出password error
如果输入的用户名不存在,则输出not found
输入格式
分两行输入,第一行为用户名,第二行为密码。

示例
输入
zhangsan
123456
输出
success
思路:
第一步:先判断username是否在users字典中存在。if username not in users,如果成立,则not found
第二步:如果不成立,继续判断 if users[username]!=password,成立输出 password error
第三步:如果不成立,则直接输出success## ## 这里有一个保存用户账户信息的字典,请用程序模拟系统的登录验证过程
 

users = {
    "alpha": "alpha123",
    "beta": "betaisverygood",
    "gamma": "1919191923",
    "zhangsan": "123456",
    "lisi": "123456",
    "admin": "ADMIN",
    "root": "Root123"
}

username = input()
password = input()

if username not in users:
    print("not found")
elif users[username] != password:
    print("password error")
else:
    print("success")

Chr 函数:返回与指定的 ANSI 字符代码相对应的字符。

python内置的values()函数返回一个字典中所有的值。

即只返回{key0:value0,key1:value1}中的value0、value1……

 
>>> d = {'a': 34, 'b': 44, 'c': 45}
>>> d
{'a': 34, 'b': 44, 'c': 45}
 
>>> list(d.values())
[34, 44, 45]

get()方法的使用

d.get(‘key’,‘value’):如果字典中存在关键字key,则返回关键字对应的值;如果字典d中不存在关键字key,则返回value的值,一般默认为None,也可以返回指定的value值,例如

d={‘name’:‘alex’,‘sex’:‘male’}
a=d.get(‘name’)
print(a)
b=d.get(‘name1’)
print(b)
c=d.get(‘name1’,‘字典中没有name这个键’)
print©

#打印结果:
alex
None
字典中没有name这个键

在python中,eval()方法是一个经常用到的函数,我们在编写输入函数的时候,需要把input()函数写进eval()方法中,这样得到的输入结果就不会是字符串类型的了。

a=(input('请输入一个数字'))
print(type(a))

b=eval(input('请输入一个数字'))
print(type(b))

请输入一个数字3
<class 'str'>
请输入一个数字5
<class 'int'>

“reverse()是python中列表的一个内置方法(在字典、字符串和元组中没有这个内置方法),用于列表中数据的反转

“sorted是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表。”

python对list有一个内置函数:sorted(),专门用于排序。

举例:

>>> a=[5,3,6,1,9,2]
>>> sorted(a)       #a经过sorted之后。得到一个排序结果
[1, 2, 3, 5, 6, 9]  #可是,原有的a并没有受到影响
>>> a
[5, 3, 6, 1, 9, 2]

也能够使用list.sort()来进行上述操作。

>>> a.sort()
>>> a               #注意这里,经过list.sort()之后,原有
[1, 2, 3, 5, 6, 9]  #a的顺序已经发生变化。与上述不同之处。

sorted和list.sort()的差别:list.sort()仅仅能对list类型进行排序。例如以下:

>>> b_dict={1:'e',3:'m',9:'a',5:'e'}
>>> b_dict.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  AttributeError: 'dict' object has no attribute 'sort'

而sorted则不然。看样例:

>>> b_dict
{1: 'e', 3: 'm', 5: 'e', 9: 'a'}
>>> sorted(b_dict)
[1, 3, 5, 9]

sorted之后。上述对dictinoary中,将key值取出并排序,返回list类型的排序结果。

依照指定关键词排序


在list.sort()和sorted中,都能够依据指定的key值排序。比如:

sorted的样例:

>>> qw="I am Qiwsir you can read my articles im my blog".split()
>>> qw
['I', 'am', 'Qiwsir', 'you', 'can', 'read', 'my', 'articles', 'im', 'my', 'blog']
>>> sorted(qw,key=str.lower)        #依照字母升序排列
['am', 'articles', 'blog', 'can', 'I', 'im', 'my', 'my', 'Qiwsir', 'read', 'you']

list.sort()的样例:

>>> qw  
['I', 'am', 'Qiwsir', 'you', 'can', 'read', 'my', 'articles', 'im', 'my', 'blog']
>>> qw.sort(key=str.lower)
>>> qw
['am', 'articles', 'blog', 'can', 'I', 'im', 'my', 'my', 'Qiwsir', 'read', 'you']

此外,key还能够接收函数的单一返回值。依照该值排序。比如:

>>> name_mark_age = [('zhangsan','A',15),('LISI','B',14),('WANGWU','A',16)]
>>> sorted(name_mark_age, key = lambda x: x[2])     #依据年龄排序
[('LISI', 'B', 14), ('zhangsan', 'A', 15), ('WANGWU', 'A', 16)]

>>> sorted(name_mark_age, key = lambda x: x[1])     #依据等级排序
[('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('LISI', 'B', 14)]

>>> sorted(name_mark_age, key = lambda x: x[0])     #依据姓名排序
[('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhangsan', 'A', 15)]

除了上述方式。python中还提供了一个选择循环选择指定元组值的模块。官方文档:https://docs.python.org/2/library/operator.html#module-operator

>>> from operator import itemgetter    

>>> name_mark_age
[('zhangsan', 'A', 15), ('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]

>>> sorted(name_mark_age,key=itemgetter(2))     #依照年龄排序
[('LISI', 'B', 14), ('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]

>>> sorted(name_mark_age,key=itemgetter(1,2))   #先依照等级排序,同样等级看年龄
[('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('LISI', 'B', 14), ('zhaoliu', 'B', 16)]

在官方文档上。有这样一个样例,和上面的操作是全然一样的。

>>> class Student:
        def __init__(self, name, grade, age):
            self.name = name
            self.grade = grade
            self.age = age

        def __repr__(self):
            return repr((self.name, self.grade, self.age))

>>> student_objects = [
        Student('john', 'A', 15),       #注意这里,用class Student来生成列表内的值
        Student('jane', 'B', 12),       #因此,能够通过student_objects[i].age来訪问某个名称的年龄,i=0,则是john的年龄
        Student('dave', 'B', 10),
        ]

>>> sorted(student_objects, key=lambda student: student.age)
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

也能够引用operator模块来实现上述排序

>>>from operator import attrgetter
>>> sorted(student_objects, key=attrgetter('age'))
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> sorted(student_objects, key=attrgetter('grade', 'age'))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

**总结:**sorted的能力超强,不仅实现排序,还能依照指定关键词排序。



以上样例都是升序。假设,添加reverse=True。比如:

>>>from operator import itemgetter 
>>> name_mark_age
[('zhangsan', 'A', 15), ('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]
>>> sorted(name_mark_age, key=itemgetter(2),reverse=True)
[('WANGWU', 'A', 16), ('zhaoliu', 'B', 16), ('zhangsan', 'A', 15), ('LISI', 'B', 14)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值