我正在尝试将字典放在一个更大的字典中,以创建一个登录系统
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有人能帮我修一下这个吗?
发布于 2014-02-19 22:21:05
您正在询问用户名是否属于dict构造函数类型。
你想要的
if userin in Users:
...为了符合样式指南,您应该为变量使用小写名称,并为类名保留大写的首字母名称。
人们通常认为使用dict.get()而不是检查关键字是否在字典中更有Pythonic风格(基于请求原谅比请求许可更容易的原则),但您所做的事情有点复杂,所以我不会批评您。
发布于 2014-02-19 22:32:11
如果您在shell中键入以下内容,您将看到问题所在:
>>> dict
<type 'dict'>这意味着您要检查变量是否在类型中,因此是TypeError。
你的意思是键入:
if userin in Users:(但正如马蒂亚斯所说,PEP8更希望你称它为users__。)
https://stackoverflow.com/questions/21883132
复制相似问题