- 学习测试开发的Day70,真棒!
- 学习时间为1H15M
- 第七次全天课20190126(下午视频3H32M-4H10M)
字典内置的常用函数
使用has_key函数已经从python3中取消,如何判断某个key在字典中是否存在:
a={1:'a',2:"b",3:"c"}
print (1 in a.keys())
print (4 in a.keys())
使用update函数来更新字典的value值
a={1:'a',2:"b",3:"c"}
a.update({4:'c'}) #若不存在key,则增加key和value
a.update({1:'x'}) #若key存在,则直接更新key对应的value
print (a)
>>> d
{1: None, 2: None}
>>> d.update({1:100})
>>> d
{1: 100, 2: None}
>>> d.update({100:100})
>>> d
{1: 100, 2: None, 100: 100}
>>>
字典内置的常用函数之pop数据
popitem()
>>> d.popitem()
(1, 100)
>>> d.popitem()
(2, None)
>>> d.popitem()
(100, 100)
>>> d.popitem()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
>>> d
{}
pop()
>>> help(dict.pop)
Help on method_descriptor:
pop(...)
D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised
>>> d={1:2,3:3,5:6}
>>> d
{1: 2, 3: 3, 5: 6}
>>> d.pop(1)
2
>>> d.pop(1,100)
100
>>> d
{3: 3, 5: 6}
>>>
查看字典的方法
>>> dir(dict)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
>>>
序列切片
列表、元组和字符串都是序列。
序列的两个主要特点是索引操作符和切片操作符。
切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并且用冒号分隔。
切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片的结束位置,但不包括这个位置(如:list[2:5])。
如果切片时,不指定第一个数,Python就会从序列的首位置开始(如list[:5])。如果不指定结束位置,Python就会停止在序列尾(如:list[3:])
代码示例1:字符串使用切片
>>> str1
'abdcdwesdfa'
>>> str1[1:5]
'bdcd'
>>> str1[:4]
'abdc'
>>> str1[3:]
'cdwesdfa'
>>> str1[-4:-1]
'sdf'
>>> str1[:20] #超出了序列的长度,一样可以进
行切片,返回整个序列
'abdcdwesdfa
# -*- coding: utf-8 -*-
bookList=['google test','yahaoo
test','sogou test','alibaba test']
print ("我的第一本书",bookList[0])
print ("我的第二本书",bookList[1])
print ("我的第三本书",bookList[2])
print ("我的第四本书",bookList[3])
#切片
print ("我的第二和第三本书
",bookList[1:3])
print ("我的倒数两本书",bookList[2:])
print ("我的最后一本书",bookList[-
1])
print ("我的倒数第二本书",bookList[-
2])
print ("我的全部书",bookList[:])
string="gloryroad test"
#遍历字符串:
for s in string:
print (s)
#字符串的切片操作
print ("字符串的前2个字母
",string[0:2])
print ("字符串的最后2个字母",string[-
2:])
print ("字符串的第3到第5个字母
",string[2:5])
print ("倒着打印最后字母",string[-1])
print ("输出单数的字母",string[::2])
print ("输出双数的字母",string[1::2])
print ("倒着输出所有字母",string[::-1])
print ("倒着输出单数字母",string[::-2])
练习:图书馆
注册和登录
users={"helloyetta":"123456"}
login_users={}
books={}
def register():
global users
while 1:
username = input("请输入您要注册的用户名:")
if not len(username)>=7:
print("您输入的用户名少于7位,请重新输入")
continue
for i in username:
if not (i>='a' and i<='z') and i!="_":
print("您输入的用户名必须是小写字母或者_!")
break
else:
if username in users:
print("您输入的用户名已经存在,请重新输入!")
continue
break
while 1:
password=input("请输入您要使用的密码:")
if not len(password) >=7:
print("您输入的密码少于7位,请重新输入")
continue
for i in password:
if not(i>='a' and i<='z') and i!='_' and not (i>='0' and i<='9'):
print("您输入的密码必须是小写字母、_、数字!")
break
else:
password2=input("请再次输入您要使用的密码:")
if password==password2:
users[username]=password
print("%s 注册已经成功!"%username)
break
else:
print("两次密码录入不一致!请重新录入!")
def login():
global users
while 1:
login_username = input("请输入登录的用户名:")
login_password=input("请输入登录的密码:")
if login_username in users:
if login_password==users[login_username]:
print("%s 用户登录成功!"%login_username )
login_users[login_username]=None
break
print("您输入的用户名和密码有误,请重新输入!")
#login()
#register()
print("欢迎使用光荣之路图书馆系统:")
print("""
命令清单:
注册用户请输入:register
登录请输入:login
""")
while 1:
command=input("请您输入要操作的命令:")
if not command in ["register","login"]:
print("您输入的命令不存在,请重新输入!")
continue
exec(command+"()")
结果:
PS D:\0grory\day7> python .\book.py
欢迎使用光荣之路图书馆系统:
命令清单:
注册用户请输入:register
登录请输入:login
请您输入要操作的命令:login
请输入登录的用户名:helloyetta
请输入登录的密码:123456
helloyetta 用户登录成功!
请您输入要操作的命令:register
请输入您要注册的用户名:teacherwang
请输入您要使用的密码:12345678
请再次输入您要使用的密码:12345678
teacherwang 注册已经成功!
请您输入要操作的命令:login
请输入登录的用户名:teacherwang
请输入登录的密码:12345678
teacherwang 用户登录成功!
请您输入要操作的命令:
注册还有个小bug,下段代码有点问题,如果录入不符合下面判断的如yetta1234,不会让重新输入用户名,而是给出提示信息后直接到输入密码了,还需要再想下.....
'''
for i in username:
if not (i>='a' and i<='z') and i!="":
print("您输入的用户名必须是小写字母或者!")
break
'''