专业的编程技术博客社区

网站首页 > 博客文章 正文

Day8 字典键的回复与巩固(字典的____________方法返回字典的“键”列表)

baijin 2024-08-08 23:02:16 博客文章 58 ℃ 0 评论

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

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

代码如下:

# vi userpw.py
# !/usr/bin/env python

db = {}
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!' % name
def 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)uit
Enter 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':
            break
if __name__ == '__main__':   #__name__是属于python中的内置类属性
   showmenu()

运行OK了,如下:

(N)注册账号
(E)账号登录
(Q)退出
Enter choice:N

请选择操作类型:[n]
请新建用户名:废柴叔叔
请输入密码:123456
新用户[废柴叔叔] 创建成功!

(N)注册账号
(E)账号登录
(Q)退出
Enter choice:

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表