求助—用户登录程序
求助~该程序是小甲鱼第26课课后动手题,题目如下:https://fishc.com.cn/forum.php?mod=viewthread&tid=45159&extra=page%3D1%26filter%3Dtypeid%26typeid%3D398
问题:我的代码无法正确执行所有指令,请问是最后的menu函数的问题嘛~
login_dict={}
def newuser():
name=input('请输入用户名:')
while name in login_dict:
name=input('该昵称已被占用,请重新输入:')
else:
code=input('请输入密码:')
login_dict=code
print('已注册成功,请登录')
return menu()
def olduser():
name=input('请输入用户名:')
while name not in login_dict:
name=input('该用户不存在请重新输入:')
else:
code=input('请输入密码:')
while code!=login_dict:
print('密码错误请重新输入')
else:
print('欢迎进入程序,请点右上角的X结束程序!')
return menu()
def menu():
while 1:
print(end='\n')
print('|---新建用户:N/n---|')
print('|---登录账号:E/e---|')
print('|---退出程序:Q/q---|')
x=input('|---请输入指令代码:')
while x not in 'NnEeQq':
x=input('您输入的代码错误,请重新输入:')
else:
if x=='N' or 'n':
newuser()
if x=='E' or 'e':
olduser()
if x=='Q' or 'q':
break
menu()
是的,不可以偷懒,必须要写完整(if x == "E" or x == "e")
login_dict={}
def newuser():
name=input('请输入用户名:')
while name in login_dict:
name=input('该昵称已被占用,请重新输入:')
else:
code=input('请输入密码:')
login_dict=code
print('已注册成功,请登录')
return menu()
def olduser():
name=input('请输入用户名:')
while name not in login_dict:
name=input('该用户不存在请重新输入:')
else:
code=input('请输入密码:')
while code!=login_dict:
print('密码错误请重新输入')
else:
print('欢迎进入程序,请点右上角的X结束程序!')
return menu()
def menu():
while 1:
print(end='\n')
print('|---新建用户:N/n---|')
print('|---登录账号:E/e---|')
print('|---退出程序:Q/q---|')
x=input('|---请输入指令代码:')
while x not in 'NnEeQq':
x=input('您输入的代码错误,请重新输入:')
else:
if x=='N' or x == 'n':
newuser()
if x=='E' or x == 'e':
olduser()
if x=='Q' or x == 'q':
break
menu() 本帖最后由 Twilight6 于 2020-6-26 21:05 编辑
else:
if x=='N' or 'n':
newuser()
这里错了,后面几个也是一样,你这里判断条件x=='N' or 'n' ,Python 会认为你是要判断 ( x=='N')or ('n')
而 'n'字符串只要不为空就是真 ,所以这里的条件就变成了
( x=='N')or (True)
而 or 只要有一个成立,那么就为 True ,则这里的判断条件 永远都会成立的
所以你要改成x == 'N'or x == 'n'
写代码绝对不可以偷懒 if x in 'Nn':
newuser()
if x in 'Ee':
olduser()
if x in 'Qq':
break
这样就可以
==优先级高于or qiuyouzhi 发表于 2020-6-26 20:53
是的,不可以偷懒,必须要写完整(if x == "E" or x == "e")
好的 谢谢~ Twilight6 发表于 2020-6-26 20:57
这里错了,后面几个也是一样,你这里判断条件x=='N' or 'n' ,Python 会认为你是要判断 ( x=='N') ...
晓得啦~感谢~ redforce 发表于 2020-6-26 21:02
这样就可以
==优先级高于or
学废了!谢谢~ xiaofeiyu 发表于 2020-6-26 21:00
写代码绝对不可以偷懒
好的{:10_266:}谢谢 云鹿 发表于 2020-6-27 10:33
晓得啦~感谢~
~ 没事加油!~
https://xxx.ilovefishc.com/forum/202005/27/132745rjvcvw1z2148jthd.gif
不知道我这样写你能看懂不 只有三十行代码 不知道有没有漏洞
i = dict()
def qq():
print('|---新建用户N/n---|')
print('|---登录账号E/e---|')
print('|---退出程序:Q/q---|')
zhiling = list(input('|---请输入指令代码:'))
if 'N' in zhiling or 'n' in zhiling:
while True:
name = input('请输入用户名:')
if name in i:
print('此用户名已存在请重新输入')
continue
else:
i = input('请输入密码:')
print('注册成功,赶紧登录试试吧!')
qq()
if 'E' in zhiling or 'e' in zhiling:
while True:
name = input('请输入用户名:')
if name not in i:
print('您输入的用户名不存在请重新输入')
continue
else:
if i == input('请输入密码:'):
print('欢迎进入XXOO系统,请点击右上角结束程序!')
if 'Q' in zhiling or 'q' in zhiling:
while True:
print('希望下次再见!')
break
qq() 为了梦想而努力 发表于 2020-12-22 19:42
不知道我这样写你能看懂不 只有三十行代码 不知道有没有漏洞
i = dict()
def qq():
应该是有的,我测的是有的,在正常登陆后是还会不断要求输入用户名和密码,这个问题我好像之前也遇到过 qiuyouzhi 发表于 2020-6-26 20:53
是的,不可以偷懒,必须要写完整(if x == "E" or x == "e")
密码错误之后会陷入死循环 千霜碎岳 发表于 2021-2-25 14:38
密码错误之后会陷入死循环
你自己不能改一下吗..很简单的
login_dict={}
def newuser():
name=input('请输入用户名:')
while name in login_dict:
name=input('该昵称已被占用,请重新输入:')
else:
code=input('请输入密码:')
login_dict=code
print('已注册成功,请登录')
return menu()
def olduser():
name=input('请输入用户名:')
while name not in login_dict:
name=input('该用户不存在请重新输入:')
else:
while True:
code = input('请输入密码:')
if code != login_dict:
print('密码错误请重新输入')
else:
print('欢迎进入程序,请点右上角的X结束程序!')
break
return menu()
def menu():
while 1:
print(end='\n')
print('|---新建用户:N/n---|')
print('|---登录账号:E/e---|')
print('|---退出程序:Q/q---|')
x=input('|---请输入指令代码:')
while x not in 'NnEeQq':
x=input('您输入的代码错误,请重新输入:')
else:
if x=='N' or x == 'n':
newuser()
if x=='E' or x == 'e':
olduser()
if x=='Q' or x == 'q':
break
menu() qiuyouzhi 发表于 2021-2-25 14:44
你自己不能改一下吗..很简单的
初学者,还在学习,没你厉害
页:
[1]