|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
if ...elif...else语句可以很方便的做条件判断,并执行相应的程序,但如果有多重elif就会显得比较乱。
不用if语句能否达到此效果呢?
下面就以小甲鱼课后练习26的动动手0为例写一下程序。
这是小甲鱼的原程序:
- user_data = {}
- def new_user():
- prompt = '请输入用户名:'
- while True:
- name = input(prompt)
- if name in user_data:
- prompt = '此用户名已经被使用,请重新输入:'
- continue
- else:
- break
- passwd = input('请输入密码:')
- user_data[name] = passwd
- print('注册成功,赶紧试试登录吧^_^')
- def old_user():
- prompt = '请输入用户名:'
- while True:
- name = input(prompt)
- if name not in user_data:
- prompt = '您输入的用户名不存在,请重新输入:'
- continue
- else:
- break
-
- passwd = input('请输入密码:')
- pwd = user_data.get(name)
- if passwd == pwd:
- print('欢迎进入XXOO系统,请点右上角的X结束程序!')
- else:
- print('密码错误!')
- def showmenu():
- prompt = '''
- |--- 新建用户:N/n ---|
- |--- 登录账号:E/e ---|
- |--- 推出程序:Q/q ---|
- |--- 请输入指令代码:'''
- while True:
- chosen = False
- while not chosen:
- choice = input(prompt)
- if choice not in 'NnEeQq':
- print('您输入的指令代码错误,请重新输入:')
- else:
- chosen = True
- if choice == 'q' or choice == 'Q':
- break
- if choice == 'n' or choice == 'N':
- new_user()
- if choice == 'e' or choice == 'E':
- old_user()
- showmenu()
复制代码
我修改以后的程序,大家先思考一下如何实现。
- user_data = {}
- def new_user():
- #同上一个程序
- def old_user():
- #同上一个程序
- #增加函数定义
- def end():
- import sys
- sys.exit()
- def other():
- print('您输入的指令代码错误,请重新输入:')
- #此函数对小甲鱼函数稍修改,增加返回值
- def showmenu():
- choice = input( '''
- |--- 新建用户:N/n ---|
- |--- 登录账号:E/e ---|
- |--- 退出程序:Q/q ---|
- |--- 请输入指令代码:''')
- return choice
-
- #新增一个字典,将键入值与需要调用的函数对应起来
- menu = {'N': new_user, 'E': old_user, 'Q': end}
- while True:
- #将showmenu返回的值大写后作为键
- menu.get(showmenu().upper(), other)()
复制代码
这样的优点是:
1. 程序条理更清晰,更易阅读
2. 容易修改
|
评分
-
查看全部评分
|