龙空技术网

Day8 字典键的回复与巩固

废柴叔叔 51

前言:

此时咱们对“pythonhaskey”大体比较重视,你们都想要分析一些“pythonhaskey”的相关知识。那么小编在网上收集了一些关于“pythonhaskey””的相关资讯,希望姐妹们能喜欢,你们快快来了解一下吧!

每天一练,每天进步一点点

主要还是熟练运用,继续使用写:登录账号的方式的代码

今天找了一个现成代码,进行学分析习,分析过程是痛苦快乐的,部分简单的问题,差点难倒自己.

代码如下:

# vi userpw.py# !/usr/bin/env pythondb = {}def newuser():   prompt = 'please regist your name: '   while True:      name = raw_input(prompt)      if db.has_key(name):         prompt = 'name taken,try another: '         continue      else:         break   pwd = raw_input('passswd: ')   db[name] = pwd   print   'Newuser [%s] has added successfully!' % namedef olduser():   name = raw_input('login: ')   pwd = raw_input('passwd: ')   passwd = db.get(name)   if passwd == pwd:      print      'welcome back', name   else:      print      'login incorrect!'def showmenu():   prompt = """(N)ew User Login(E)xisting User Login(Q)uitEnter choice: """   while True:      try:         choice = raw_input(prompt).strip()[0].lower()         print         '\nYou picked: [%s]' % choice         if choice not in 'neq':            print            'invalid option,please try again'         if choice == 'n':            newuser()         if choice == 'e':            olduser()         if choice == 'q':            break      except(EOFError, KeyboardInterrupt):         print         'invalid option,please try again'if __name__ == '__main__':   showmenu()

程序的意思我能看懂,也明白会使用,感觉也没毛病.但是我执行的时候就是一直报错.

最后发现问题点就是python2和python3部分差异无法兼容:

1.raw_input() 这是python2里的用法,python3里头直接合并了

2.字典的haskey(),也是pytho2n的用法

通过我的修改整理,顺便部分改成中文,让程序更容易懂,代码如下:

#!/usr/bin/python# -*- coding: UTF-8 -*-db = {}def newuser():       #自定义一个函数:新建用户名   prompt ='请新建用户名:'   while True:      name = input(prompt)      if name in db:         prompt ='该用户名已存在,请重新输入: '         continue      else:         break   pwd = input('请输入密码:')   db[name] = pwd   print('新用户[%s] 创建成功!'%name)def olduser():    #输入用户名和密码,如果正确就登录,不正确提示输入错误   name = input('账号: ')   pwd = input('密码: ')   passwd = db.get(name)   if passwd == pwd:      print('Weclome!',name)   else:      print('用户名或密码错误!,请重新输入')def showmenu():       #   prompt = '''(N)注册账号(E)账号登录(Q)退出Enter choice:'''   while True:         choice = input(prompt).strip()[0].lower()         print('\n请选择操作类型:[%s]'%choice)         if choice not in 'neq':            print('无效操作,请重新输入')         if choice == 'n':            newuser()         if choice =='e':            olduser()         if choice =='q':            breakif __name__ == '__main__':   #__name__是属于python中的内置类属性   showmenu()

运行OK了,如下:

(N)注册账号(E)账号登录(Q)退出Enter choice:N请选择操作类型:[n]请新建用户名:废柴叔叔请输入密码:123456新用户[废柴叔叔] 创建成功!(N)注册账号(E)账号登录(Q)退出Enter choice:

标签: #pythonhaskey