我有一些非常基本的帐户登录系统代码。问题是我对一个帐户分为三个部分:uname
,upass
,然后是bal
。在我介绍bal
之前,一切工作正常。
我对Python非常业余,无法弄清楚如何修复它。我的意图是在我添加的每个帐户中包含3个部分,分别是用户名,密码和帐户余额,但到目前为止,我已经知道代码可以正常工作地编写了尽可能合理的代码,但似乎并没有很好地打印或操作天平/ bal
。
码:
class Login:
def __init__(self):
self.users = {}
def addUser(self, uname, upass, bal):
self.users[uname] = upass, bal;
def login(self):
userNameInput = input("Username: ")
userPassInput = input("Password: ")
if userNameInput in self.users:
if userPassInput in self.users[userNameInput]:
print("Access Granted!")
self.access(userNameInput)
else:
print("Access Denied!")
return self.login()
def access(self, uname, bal):
print("Welcome, "+uname+"!"+bal)
def main():
mylogin = Login()
mylogin.addUser("u123", "p123", 123)
mylogin.login()
main()
错误:
Traceback (most recent call last):
File "C:\Users\Tom\Desktop\test.py", line 29, in <module>
main()
File "C:\Users\Tom\Desktop\test.py", line 27, in main
mylogin.login()
File "C:\Users\Tom\Desktop\test.py", line 14, in login
self.access(userNameInput)
TypeError: access() missing 1 required positional argument: 'bal'
额外的小问题:
对于“ Def访问”部分,由于某种原因,
uname
的部分可以命名为“ ANYTHING”,但在登录时仍会打印帐户的实际名称。对于我来说,为什么该部分可以使用完全不同的名称来完美使用,这没有意义。 最佳答案
问题在于access
方法将bal
作为参数,但是在调用bal
时没有传递self.access(userNameInput)
。您可以在bal
方法中获取access
并删除bal
参数。
另外,您不能在此处连接字符串和整数:print("Welcome, "+uname+"!"+bal)
。只需使用str.format
即可。
class Login:
def __init__(self):
self.users = {}
def addUser(self, uname, upass, bal):
self.users[uname] = upass, bal
def login(self):
userNameInput = input("Username: ")
userPassInput = input("Password: ")
if userNameInput in self.users:
if userPassInput in self.users[userNameInput]:
print("Access Granted!")
self.access(userNameInput)
else:
print("Access Denied!")
# You shouldn't recurse here and use a loop instead.
# Python has a recursion limit.
return self.login()
# Remove the `bal` parameter.
def access(self, uname):
# Get the bal out of the self.users dict.
bal = self.users[uname][1]
print("Welcome, {}!{}".format(uname, bal))
def main():
mylogin = Login()
mylogin.addUser("u123", "p123", 123)
mylogin.login()
main()
关于python - Python-在字典中打印多个内容时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46109606/