#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()
преобразует любую заглавную букву в маленькие буквы, чтобы уменьшить количество ошибок