Использование операторов if с пользовательскими вводами

#python #if-statement #user-input

#python #if-statement #пользовательский ввод

Вопрос:

Я пытаюсь создать простую инвентаризацию продуктов с помощью python, но по какой-то причине if оператор не выполняется, и я не знаю, что не так. Ниже приведены выходные и входные данные кода.

#Код

 def inventory_products():
    choice = str(input("What do you want to do? nEnter Add item, Quantity, Show Inventory:"))
    if choice == 'Add item':
        input("Enter name")
inventory_products()
 

#Вывод

 What do you want to do? 
Enter Add item, Quantity, Show Inventory:Add item 

Process finished with exit code 0
 

Комментарии:

1. похоже, у вас есть дополнительное пространство после элемента

2. кстати str() , вокруг input() является избыточным, поскольку input() всегда возвращает строку.

3. @Tuqay не уверен, но может быть, так как да, вы можете выделить это: p, но нравится… задавать такой вопрос stackoverflow, даже не запуская код хотя бы еще один раз, является огромной проблемой

4. Также if работает для меня. Я вижу Enter name , и мне нужно что-то ввести, чтобы программа завершилась. Я должен ввести точно Add item сначала input() , чтобы это сработало.

5. Этот код должен работать. Похоже, вы случайно добавили пробел в конце своего ответа, и поэтому ввод не был точно равен Add item .

Ответ №1:

Попробуйте это:

 def inventory_products():
    choice = str(input("What do you want to do? nEnter Add item, Quantity, Show Inventory:"))
    if choice.strip() == 'Add item': # change in code to remove extra spaces
        input("Enter name")
inventory_products()
 

Ответ №2:

Если вы хотите узнать о сравнении строк в python, нажмите здесь

но вы можете попробовать этот код:

 def inventory_products():
    choice = str(input("What do you want to do? nEnter Add item, Quantity, Show Inventory:")).lower()
    if choice.strip() == 'add item':
        input("Enter name: ")
    else:
        print("Invalid Choice!")

inventory_products()
 

So .lower() преобразует любую заглавную букву в маленькие буквы, чтобы уменьшить количество ошибок