我正在尝试将字典放在较大的字典中以创建登录系统
if(os.path.exists('Users.dat')):
with open('Users.dat','rb')as f:
Users = pickle.load(f)
f.close()
done=False
while not(done):
userin = input('Username: ')
passin = input('Password: ')
if userin in dict:
usernames = Users[userin]['Username']
passwords = Users[userin]['Password']
else:
break
当我这样做时,它返回:
Username: JTomkins12
Password: 4621
Traceback (most recent call last):
File "C:\Users\james\Lessons\Computing\Aptana Studio Workspace\Full
Program\FullProgram.py", line 274, in <module>
loginmenu(choice)
File "C:\Users\james\Lessons\Computing\Aptana Studio Workspace\Full
Program\FullProgram.py", line 255, in loginmenu
if userin in dict:
TypeError: argument of type 'type' is not iterable
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您询问用户名是否在dict
构造函数类型中。
你想要
if userin in Users:
...
要符合样式指南,您应该使用变量的小写名称,并为类名保留大写的首字母名称。
通常认为使用dict.get()
更多Pythonic而不是检查密钥是否在dict中(原则上要求宽恕比允许更容易),但你正在做的事情有点复杂,所以我不会批评。
答案 1 :(得分:0)
如果在shell中键入以下内容,您将看到错误:
>>> dict
<type 'dict'>
这意味着您正在检查变量是否在类型中,因此TypeError
。
您打算输入:
if userin in Users:
(但就像马蒂亚斯所说,PEP8宁愿你称之为users
。)