(Python) ELSE выполняется, даже если IF был удовлетворен? - PullRequest
0 голосов
/ 02 февраля 2020

Выполняя домашнее задание и немного застревая, почему код выполняет «else», даже считая «if» выполненным? Проигнорируйте небрежный код, я очень новый: /

order1 = input("What would you like to order?: \n \n" + "1: " + orderBurger + "\n" + "2: " + orderFries + "\n" + "3: " + orderDrink + "\n" + "\nAnswer = ")

while order == True:
 if order1 == 1:
  print("You have selected to order 1: " + orderBurger)
 elif order1 == 2:
  print("You have selected to order 1: " + orderFries)
 elif order1 == 3:
  print("You have selected to order 1: " + orderDrink)
 else:
  print("Invalid Input")
 check = input("Is this your final item?:" + "1: " + q1 + "2: " + q2  + "Answer = ")
 if check == 1:
  print("Your items have been added to the basket")
  break
 elif check == 2:
  check
 elif check == 3:
  check
 else:
  print("Invalid input")

Это вывод

Ответы [ 3 ]

0 голосов
/ 02 февраля 2020

Отступ очень важен в Python. В зависимости от того, как реализованы отступы, выполняются блоки кода для условий.

Неверный отступ может привести к неожиданному выполнению блока кода.

Вот рабочая демонстрация программа заказа

# File name:  order-demo.py

moreItems = True
while (moreItems == True):
    order = input("\n What would you like to order?\n" 
                  + " 1: Burger\n 2: Fries\n 3: Drink\n Answer = ")

    if ((order == "1") or (order == "2") or (order == "3")):
        print("You have selected to order " + order)
        print("Your item has been added to the basket.\n")
    else:
        print("Invalid Input")

    check = input("Is this your final item?: \n 1: Yes \n 2: No \n Answer = ")
    if check == "1":
            print("\n Thank you. Please proceed to checkout.")
            moreItems = False       
    elif check == "2":
            print("Please continue your shopping")
    else:
        print("Invalid input")

Выход

$ python3 order-demo.py 

 What would you like to order?
 1: Burger
 2: Fries
 3: Drink
 Answer = 1
You have selected to order 1
Your item has been added to the basket.

Is this your final item?: 
 1: Yes 
 2: No 
 Answer = 2
Please continue your shopping

 What would you like to order?
 1: Burger
 2: Fries
 3: Drink
 Answer = 2
You have selected to order 2
Your item has been added to the basket.

Is this your final item?: 
 1: Yes 
 2: No 
 Answer = 1

 Thank you. Please proceed to checkout.
$ 
0 голосов
/ 02 февраля 2020

заменить первую строку на это:

order1 = int( input("What would you like to order?: \n \n" + "1: " + orderBurger + "\n" + "2: " + orderFries + "\n" + "3: " + orderDrink + "\n" + "\nAnswer = ") )
0 голосов
/ 02 февраля 2020

Если вы используете type(order1), вы увидите, является ли ваш ответ строкой или целым числом. Если это строка (и я думаю, что это так), вы можете преобразовать ее в int с помощью int(order1) или заменить код на if order1 == '1'

...