если х в [список] итератор - PullRequest
0 голосов
/ 26 августа 2018
def new_user() -> str:
    users = []
    print("Welcome to The 'Create New User' Interface")
    sleep(0.5)
    x = input("Enter Name to Use for Account Access\n*Name is Case Sensitive to Access Account*: ")
    if x in users:
        x = input("That User Already Exists! Enter a New Name: ")
        users.append(x)
        print("Your Account Access Name is: " + str(x))
    else:
        users.append(x)
        print("Your Account Access Name is: " + str(x))

Так что я не уверен, как сформулировать этот вопрос, но у меня есть этот блок кода, и, как вы можете видеть, я хочу проверить, существует ли введенное пользователем имя, и если это произойдет, то будет запрашивать новое имя. и добавьте его в список, и если он еще не существует, он добавит его в список, но есть способ обойти это, если список уже содержит имя и пользовательские входы с таким же именем if x in users: код будет запущен, и когда будет предложено ввести другое имя, если они введут то же имя, он не распознает, что оно уже существует, и добавит его в список в любом случае, как я могу предотвратить это?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Решение

users = []
print("Welcome to The 'Create New User' Interface")
x = input("Enter Name to Use for Account Access\n*Name is Case Sensitive to Access Account*: ")
while x in users:
    x = input("That User Already Exists! Enter a New Name: ")
users.append(x)
print("Your Account Access Name is: " + str(x))

Просто просто измените ваш цикл if на цикл while, который будет продолжаться до тех пор, пока не будет дано уникальное имя.

Предложения

users = []
print("Welcome to The 'Create New User' Interface")
while True:
    user_name = '' #now users can not enter a empty user_name
    while not user_name:
        user_name = input("Enter Name to Use for Account Access: ")
    for i in range(0, len(users)): #different loop to enable use of lower()
        while  user_name.lower() == users[i].lower(): #removes need for unique cases
            print("That User Already Exists!")
            user_name = '' #again stopping empty fields
            while not user_name:
                user_name = input("Enter Name to Use for Account Access: ")
    users.append(user_name)     
    print("Your Account Access Name is: " + user_name)

Для начала мы можем создать цикл, который будет отклонять любой пробел user_name.

Далее мы можем использовать .lower() при проверке, чтобы увидеть, user_name существует в users[].Делая это, мы можем сохранить уникальный формат регистра, который пользователь хочет использовать для хранения своего имени (возможно, для целей отображения), но в то же время мы можем проверить, существует ли user_name, независимо от формата регистра.

Очистив его, мы можем сделать что-то вроде этого:

 def ask_user(message=''): #create function to check for blank inputs
    user_name = ''
    while not user_name:
        user_name = input(message)
    return user_name

users = []
print("Welcome to The 'Create New User' Interface")
while True:
    user_name = ask_user("Enter Name to Use for Account Access: ")
    for i in range(0, len(users)):
        while  user_name.lower() == users[i].lower():
            print("\nThat User Already Exists!") #newline for clarity
            user_name = ask_user("Enter Name to Use for Account Access: ")
    users.append(user_name)     
    print("\nYour Account Access Name is: " + user_name) #newline for clarity

Здесь я создал ask_user, который обрабатывает пустые вводы.Затем добавили \n в нескольких местах, чтобы улучшить читаемость.

Вывод

(xenial)vash@localhost:~/pcc/10$ python3 helping.py
Welcome to The 'Create New User' Interface
Enter Name to Use for Account Access: 
Enter Name to Use for Account Access: vash

Your Account Access Name is: vash
Enter Name to Use for Account Access: VASH

That User Already Exists!
Enter Name to Use for Account Access: 
Enter Name to Use for Account Access: p0seidon

Your Account Access Name is: p0seidon
Enter Name to Use for Account Access: P0SEidoN

That User Already Exists!

Надеюсь, это поможет!

0 голосов
/ 26 августа 2018

Чтобы получить действительный пользовательский ввод, оберните запрос в цикл, и когда у вас есть действительный ввод break, например:

print("Enter Name to Use for Account Access")
print("*Name is Case Sensitive to Access Account*")
while True:
    x = input("Enter a Name: ")
    if x not in users:  # Valid input
        break
    print("That User Already Exists!")

users.append(x)
print("Your Account Access Name is:", x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...