关于第26课课后习题
本帖最后由 Saint_HUFS 于 2020-4-20 07:56 编辑dict={}
def N():
while 1:
user=input('请输入用户名n:')
if userin dict:
print('此用户名已经被使用,请重新输入:')
continue
else:
break
pw = input('请输入密码:')
dict = pw
print('注册成功,赶紧试试登录吧!')
def E():
while 1:
user = input('请输入用户名e:')
if user not in dict:
print('您输入的用户名不存在,请重新输入:',end="")
continue
else:
while 0:
pw=input('请输入密码:')
if pw==dict.get(user):
print('欢迎进入XXOO系统,请点击右上角的x结束程序')
break
else:
print('您输入的密码错误,请重新输入。',end="")
while 1:
print('新建用户:N/n')
print('登录账号: E/e')
print('退出程序:Q/q')
code = input('请输入指令代码m:')
if code == 'N' or 'n':
N()
continue
if code == 'E' or 'e':
E()
continue
if code == 'Q' or 'q':
break
请问 为什么已经写了
if code == 'N' or 'n':
N()
continue
if code == 'E' or 'e':
E()
continue
if code == 'Q' or 'q':
break
但是每次运行之后即使输入E或者 e 也还是从开头 N()开始运行,if 条件句根本没有用一样,只是按顺序运行,麻烦大神解答一下,谢谢
(为了区别,特地用input(‘请输入用户名n ’) 和input('请输入用户名e')来区分 N( )函数 新用户注册和 E() 函数老用户登录 本帖最后由 txxcat 于 2020-4-20 07:29 编辑
if code == 'N' or 'n':,你的表达式错了,这个是code与'N'比对后的结果再和'n'比对,当code是'N'以外的情况下,是False or 'n',结果是'n',非空字符,相当于if True,当然就运行N()了。
>>> code='n'
>>> code == 'N' or 'n'
'n'
>>> code='N'
>>> code == 'N' or 'n'
True
>>> code='e'
>>> code == 'N' or 'n'
'n'
应该改成:if code == 'N' or code == 'n',这样才能返回你需要的值,后面的都要这样改。不过我喜欢另一种写法:if code.strip().lower() == 'n',我感觉这样严谨简洁一些,尤其是碰到长字符串比对,如'exit'、'quit'这一类的时候。 txxcat 发表于 2020-4-20 07:25
if code == 'N' or 'n':,你的表达式错了,这个是code与'N'比对后的结果再和'n'比对,当code是'N'以外的情 ...
啊 懂了,谢谢!!!!
页:
[1]