бесконечно, пока l oop в последних строках кода - PullRequest
1 голос
/ 24 января 2020

Может ли кто-нибудь помочь мне со следующим:

У меня есть код, который читает имя пользователя и пароль, а затем позволяет пользователям получить доступ к программе. У меня есть первый вариант, чтобы правильно зарегистрировать нового пользователя. У меня проблема с бесконечной l oop проблемой с моими последними двумя строками кода. Я хотел бы запустить строку, утверждая, что если введено незарегистрированное имя пользователя, возвращается строка, сообщающая, что такого зарегистрированного пользователя нет. Строка просто продолжает работать в l oop, и я могу что-нибудь сделать, чтобы это изменить

имя пользователя: admin

пароль: adm1n

мой код выглядит следующим образом:

users = {}  
with open ('user.txt', 'rt')as username:
    for line in username:
        username, password = line.split(",")
        users[username.strip()] = password.strip()  # strip removes leading/trailing whitespaces

uinput = input("Please enter your username:\n")
while uinput not in users:
    print("Username incorrect.")
    uinput = input("Please enter a valid username:/n")

if uinput in users:
            print ("Username correct")

with open('user.txt', 'rt') as password:
    for line in password:
        username, password = line.split(",")
        users[password.strip()] = username.strip()  # strip removes leading/trailing whitespaces

uinput2 = input("Please enter your password:\n")
while uinput2 not in users:
    print("Your username is correct but your password is incorrect.")
    uinput2 = input("Please enter a valid password:\n")

if uinput2 in users:
    password2 = ("Password correct")
    print (password2)

if password2 == ("Password correct"):
       menu = (input("\nPlease select one of the following options:\nr - register user\na - add task\nva - view all tasks\nvm - view my tasks\ne - exit\n"))
    if menu == "r" or menu == "R":
                new_user = (input("Please enter a new user name:\n"))
                new_password = (input("Please enter a new password:\n"))
                with open ('user.txt', 'a')as username:
                        username.write("\n" + new_user + ", " + new_password)
    elif menu == "a" or menu == "A":
                task = input("Please enter the username of the person the task is asigned to.\n")
        while task not in username:
                print("User not registered. Please enter a valid username:\n")

1 Ответ

0 голосов
/ 24 января 2020

У вас есть al oop в конце, который говорит

while task not in username:
    print("User not registered. Please enter a valid username:\n")

Это незакончено и будет l oop бесконечно, так как если task не в username, печать чего-либо не изменится этот факт, так что он просто l oop и напечатает снова. Вы, вероятно, хотели добавить что-то вроде

task = input("Please enter a valid username of a person the task is assigned to.\n")
...