小甲鱼26讲课后题
Urse = {}def User_account():
while True:
command = input('---新建用户N/n---'
'---登录账户E/e---'
'---退出程序Q/q---'
'---请输入指令代码:')
if command == 'n':
New_Urse_name = input('请输入用户名')
if New_Urse_name in Urse:
print('此用户名已存在重新输入')
continue
else:
password = input('请输入密码')
Urse = password
print('注册成功,赶紧试试登录吧')
command = input()
if command == 'E' or 'e':
while True:
Urse_name = input('请输入用户名')
Urse.get(Urse_name,'您输入的用户不存在请重新输入')
if Urse_name in Urse:
times = 3
password = input('请输入密码')
if Urse == password:
print('登录成功')
continue
else:
times -= 1
password = input('密码错误,请重新输入')
print('您还有%d次机会'% (times))
continue
if times == 0:
print('次数已用,您是否忘记密码')
break
if command == 'Q' or 'q':
print('已退出')
为什么我输入a的时候竟然会进入 到
else:
times -= 1
password = input('密码错误,请重新输入')
print('您还有%d次机会'% (times))
continue
---新建用户N/n------登录账户E/e------退出程序Q/q------请输入指令代码:a
请输入用户名123
Traceback (most recent call last):
File "D:/py文件/求助解答文件/用户登录系统.py", line 42, in <module>
User_account()
File "D:/py文件/求助解答文件/用户登录系统.py", line 32, in User_account
times -= 1
UnboundLocalError: local variable 'times' referenced before assignment
以上是报错
条件判断不是我所想的那样,好比if command == 'q' or 'Q',就算我从来没有输入过d,输入到一次两次就可以进入这个条件
以上代码还存在众多问题,我都重写了{:10_266:}
if command == 'q' or 'Q'
这句话的意思是if command == 'q' 或者if'Q'
而if'Q'一直是真的
真或假,取真,所以这句判断就一直判断为真 本帖最后由 疾风怪盗 于 2020-9-15 23:36 编辑
def New_User_account():
New_Urse_name = input('请输入用户名')
if New_Urse_name in Urse.keys():
print('此用户名已存在重新输入')
else:
password = input('请输入密码')
Urse = password
print('注册成功,赶紧试试登录吧')
def Check_User_account():
times = 3
while times > 0:
Urse_name = input('请输入用户名')
if Urse_name in Urse.keys():
return Check_psw(Urse_name)
else:
times -= 1
print('您输入的用户不存在请重新输入,您还有%d次机会' % (times))
else:
print('次数已用,您是否忘记用户名或密码')
return False
def Check_psw(Urse_name):
times = 3
while times > 0:
password = input('请输入密码')
if Urse == password:
print('登录成功')
return False
else:
times -= 1
print('您还有%d次机会' % (times))
Urse = {'111': '111'}
a = True
while a:
command = input('---新建用户N/n---\n'
'---登录账户E/e---\n'
'---退出程序Q/q---\n'
'---请输入指令代码:')
if command == 'Q' or command == 'q':
print('已退出')
break
elif command == 'N' or command == 'n':
New_User_account()
elif command == 'E' or command == 'e':
a = Check_User_account()
else:
print('指令无效,重新输入')
粗略的看了下,存在以下几个问题:
一、if 判断太多,可以使用 if...elif...else... 多条件分支语句
二、类似 if command == 'E' or 'e':
之类的判断没有考虑优先级,可以使用
command == 'E' or command == 'e':
这种类型的判断
三、写代码之前记得理清楚逻辑关系,可以使用思维导图或者流程图 if command == 'Q' or 'q':
这句不能达到你的预期效果, 'Q' or 'q', 因为'Q'本来就是真值,所以直接返回Q,你这句就相当于:
if command == 'Q':
要达到你的效果需要写成:
if command == 'Q' or command == 'q':
或者:
if command in ('Q', 'q'):
页:
[1]