我有一些非常基本的帐户登录系统代码。问题是我对一个帐户分为三个部分:unameupass,然后是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/

10-12 20:13