字典课后作业问题求助
print('|--- 新建用户:A ---|')print('|--- 登录账号:B---|')
print('|--- 退出程序:C---|')
contact={'林声宇':'19679930915','符淑莲':'13876116083','小甲鱼':'23456'}
instr=(input("\n请输入相关指令:"))
if instr=='A':
name = input('请输入用户姓名:')
while True:
if name in contact:
name=input("此用户名已经被使用,请重新输入:")
key = input("请输入密码:")
contact.setdefault(name, key)
break
else:
key=input("请输入密码:")
contact.setdefault(name,key)
break
print("注册成功,赶紧试试登录吧!")
if instr == 'B':
name = input('请输入联系人姓名:')
while True:
if name not in contact:
name=input("此用户名不存在,请重新输入:")
continue
else:
break
key=input("请输入密码:")
pwd=contact.get(name)
if key==pwd:
print("欢迎进入系统!")
else:
print("密码错误!")
if instr == 'C':
print("欢迎进入系统!")
--------------------------------------------
运行:
Traceback (most recent call last):
File "E:/_Keil uVision3/89997.py", line 11, in <module>
if name in contact:
NameError: name 'name' is not defined
(求问各位大佬 这里的报错是什么意思呢?为什么我输入指令A就可以运行程序,输入B和C就会报错,name没定义是啥意思???)
本帖最后由 suchocolate 于 2021-10-12 18:11 编辑
缩进问题:
if 和while同级了,如果输入的不是A,执行到while里面时,name就没有赋值,所以报错。
应该这样写:
contact = {'林声宇': '19679930915', '符淑莲': '13876116083', '小甲鱼': '23456'}
while True:
print('')
print('|--- 新建用户:A ---|')
print('|--- 登录账号:B---|')
print('|--- 退出程序:C---|')
instr = input("\n请输入相关指令:")
if instr in ['a', 'A']:
name = input('请输入用户姓名:')
while True:
if name in contact:
name = input('此用户名已经被使用,请重新输入:')
else:
contact = input("请输入密码:")
print("注册成功,赶紧试试登录吧!")
break
elif instr in ['b', 'B']:
name = input('请输入用户姓名:')
while True:
if name not in contact:
name = input('此用户名不存在,请重新输入:')
else:
if contact == input("请输入密码:"):
print("登录成功!")
break
else:
print("密码不正确!")
elif instr in ['c', 'C']:
print("退出程序")
exit(0)
自我解答一波,我写的原程序第一段if和while同级了,所以输入的指令不为A时,会先执行第一段里面的while,但是while里面的if name in contact的name在没有执行instr==A时,name没有被定义,所以会出现报错,name 'name' not difine,因为没有input name,所以第一个while里面的name是没有被定义的。解决方法是将第一段的while等级缩进,缩于if里面,程序便可以执行。
print('|--- 新建用户:A ---|')
print('|--- 登录账号:B---|')
print('|--- 退出程序:C---|')
contact={'林声宇':'19679930915','符淑莲':'13876116083','小甲鱼':'23456'}
instr=(input("\n请输入相关指令:"))
if instr=='A':
name = input('请输入用户姓名:')
while True:
if name in contact:
name=input("此用户名已经被使用,请重新输入:")
key = input("请输入密码:")
contact.setdefault(name, key)
break
else:
key=input("请输入密码:")
contact.setdefault(name,key)
break
print("注册成功,赶紧试试登录吧!")
if instr == 'B':
name = input('请输入联系人姓名:')
while True:
if name not in contact:
name=input("此用户名不存在,请重新输入:")
continue
else:
break
key=input("请输入密码:")
pwd=contact.get(name)
if key==pwd:
print("欢迎进入系统!")
else:
print("密码错误!")
if instr == 'C':
print("欢迎进入系统!")
页:
[1]