「Python」2020.03.11学习笔记 | 字典内置函数update、pop、切片+图书馆小程序之注册和登录

  • 学习测试开发的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数据

image.png

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
'''

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容