【问题标题】:Make two while loops one loop做两个while循环一个循环
【发布时间】:2019-03-08 11:10:32
【问题描述】:

我有两个几乎相同的 while 循环,除了一些数字发生了变化。我一直在环顾四周,但找不到解决问题的方法。任何帮助,将不胜感激。我想让两个while循环变成一个循环,但我不知道怎么做。我一直在寻找答案,但似乎没有任何问题适用于我的问题。

while True:
    print("User 1")
    login=input("Do you have an account? (yes/no) ")
    loggedin=False
    if login.lower()=="yes":
        login1=open("login.csv")
        reader = csv.reader(login1)
        username1=input("What is your username: ")
        password1=input("What is your password: ")
        for row in reader:
            if row[0]==username1:
                if row[1]==password1:
                    print("Welcome " + username1)
                    loggedin=True
                    break
        if loggedin==False:
            print("Invalid username or password. Please try again.")
            continue

    elif login.lower()=="no":
        print(" ")
        print("Make an account.")
        print(" ")
        username1=input("What is your username: ")
        password1=input("What is your password: ")
        break

    else:
        print("Invalid input.")
        continue

唯一改变的是数字 1 变成了数字 2(除了 row[1]) 同样,任何帮助将不胜感激。

【问题讨论】:

  • 你的意思是,两个循环?代码中只有一个while循环
  • 使用外部for 循环怎么样?
  • 问题出在哪里?
  • 我认为这里的问题是 OP 想要编写另一个几乎相同的 while 循环(除了用户号,...)并且不知道该怎么做...我是对吗?
  • 在发布 Python 代码时,请努力准确地重现您的缩进。如果读者必须尝试猜测您的实际缩进,他们可能会错过问题或在程序中引入新问题。

标签: python loops


【解决方案1】:

从你说唯一的区别是 1 变成 2 我猜你只是想再次为第二个用户运行循环,也许是这里的字典,然后你可以迭代你已经为每个用户构建的循环在字典中,你必须修改你的循环我无法运行它们,但格式的想法是这样的

while True:
    users = {'User 1': [username1, password1], 'User 2': [username2, password2]}
    for k in users:
        print('{}'.format(k))
        login=input("Do you have an account? (yes/no) ")
        loggedin=False
        if login.lower()=="yes":
            login1=open("login.csv")
            reader = csv.reader(login1)
            users[k][0]=input("What is your username: ")
            users[k][1]=input("What is your password: ")
            for row in reader:
                if row[0]==users[k][0]:
                    if row[1]==users[k][1]:
                        print("Welcome " + users[k][0])
                        loggedin=True
                        break
            if loggedin==False:
                print("Invalid username or password. Please try again.")
                continue

        elif login.lower()=="no":
            print(" ")
            print("Make an account.")
            print(" ")
            users[k][0]=input("What is your username: ")
            users[k][1]=input("What is your password: ")
            break

        else:
            print("Invalid input.")
            continue

【讨论】:

    【解决方案2】:

    假设您的 while 循环在您列出的函数内,这是我能想到的最简单的方法。

    from threading import Thread
        t1 = Thread(target = firstFunction)
        t2 = Thread(target = secondFunction)
        t1.start()
        t2.start()
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多