逻辑问题我无法解决。(标题很抱歉)

2024-10-01 07:28:17 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,很抱歉标题不一致。我不知道如何正确地描述我的问题

我已经学习Python大约两个星期了,所以请原谅我是这样一个笨蛋

class User():
    def __init__(self, name=0, password=0):
        self.name = name 
        self.password = password
        
    
def createAcc():
    username = input("Name: ")
    userpass = input("Password: ")
    
    userList.append(User(username, userpass))
    
    
def loginAcc():
    accName = input("Account Name: ")
    if accName in userList:
        print("Hi")
    
    
userList = []
createAcc()
loginAcc()

这里的问题是,它没有打印“Hi”,这可能是因为行

if accName in userList:

我知道这是因为我将“用户”插入列表的方式。 例如,我把名字改为“杰夫” 字符串“Jeff”实际上不在userList中,所以当我尝试调用它时,它不起作用

很好,我理解这个问题,但我如何解决它?我不知道

提前谢谢


Tags: nameinselfinputifdefusernamepassword
3条回答

可以用以下内容替换loginAcc函数:

def loginAcc():
    accName = input("Account Name: ")
    for account in userList:
        if account.name == accName:
            print("Hi")

使用列表理解从userList中提取用户名:

def loginAcc():
    accName = input("Account Name: ")
    if accName in [u.name for u in userList]:
        print("Hi")

其他人建议循环列出你的名字,但我想我会给出一个不同的方法。通过使用字典而不是列表,您可以按名称查找用户对象,或者只按其键()进行搜索。因此,您的代码如下所示:

class User():
    def __init__(self, name=0, password=0):
        self.name = name 
        self.password = password
        
    
def createAcc():
    username = input("Name: ")
    userpass = input("Password: ")
    userDict[username] = User(username, userpass)
    
    
def loginAcc():
    accName = input("Account Name: ")
    if accName in userDict.keys(): # check if accName is a key in the dict
        print("Hi")
    
    print(userDict[accName].password) # or just access objects directly using their key.
    
userDict = dict()
createAcc()
loginAcc()

相关问题 更多 >