Ошибка Python, локальная переменная может быть указана перед присваиванием, переменная вне условия if - PullRequest
0 голосов
/ 01 ноября 2018

Я новичок в практике программирования на Python и создал свою первую базовую программу

Мне нужно получить доступ и распечатать локальную переменную внутри функции if, и если я пытаюсь получить к ней доступ, она показывает, что на локальную переменную можно ссылаться

вот полный код

def main():
print("Please place your order by filling the options")

name = input("What is your name ")
while not name.isalpha():
    print("invalid name")

age = input("What is your age ")
if not age.isdigit():
    print("Please type in correct form")
    if age >= "50":
    print("you are not allowed!")
    sys.exit()

item_1 = "burger"
item_2 = "pizza"
print("what would you like to order?")

print(item_1 + "\n" + item_2)
order = input()

item_1_large = "large burger"
item_1_small = "small burger"

item_2_large = "large pizza"
item_2_small = "small pizza"

if order == item_1:
    print("What would you like to choose?")
    print(item_1_large + "\n" + item_1_small)
    selection_of_category = input()
elif order == item_2:
    print("What would you like to choose?")
    print(item_2_large + "\n" + item_2_small)
    selection_of_category = input()

print("How many ")
number_of_order = input()

burger_price_large = int(10)
burger_price_small = int(5)
pizza_price_large = int(15)
pizza_price_small = int(8)




if order == item_1_large:
    result = burger_price_large * int(number_of_order)
elif order == item_1_small:
    result = burger_price_small * int(number_of_order)
elif order == item_2_large:
    result = pizza_price_large * int(number_of_order)
elif order == item_2_small:
    result = pizza_price_small * int(number_of_order)



if order == item_1:
    print("Your Burger Order Has Been Placed")
elif order == item_2:
    print("Your Pizza Order Has Been Placed")
else:
    print("You have made wrong choice")

print("Dear Mr. " + name, "Your Total Bill is $" + str (result))
while True:
main()
if input("Would you like to order something? (Y/N)").strip().upper() != 'Y':
    today = date.today()
    print("Thank you for your order")
    print(today)
    break

И у меня следующая ошибка печать («Уважаемый господин» + имя, «Ваш общий счет составляет $» + стр. (результат)) UnboundLocalError: локальная переменная 'result', на которую ссылается перед присваиванием

1 Ответ

0 голосов
/ 01 ноября 2018

Ваша проблема в том, что результат определяется только в операторах if и else-if. Это означает, что если каждое условие в операторах if или else-if не выполняется, результат не будет определен, но вы будете пытаться использовать его значение.

У вас есть два решения, чтобы решить эту проблему:

  1. Сделать последний элиф другим, чтобы он был универсальным и имел значение для всех возможных значений порядка
  2. Иметь еще один символ после последнего слова elif, чтобы определить результат для чего-то вроде "N / A", если все условия if & elif не выполняются.
...