4

Начал обучение python и при решение одной задачи, получается очень многострочный код. Какими способами его можно уменьшить или что необходимо использовать, что бы не писать многострочные условия с if'ами? Сам код:

print('Заказывайте: шаурма-1, самсы-2, пирожки-3')
    a = int(input())
    if a == 1:
      print('Хорошо, с чем вам шаурму: мясо-1, курица-2')
      eat = int(input())
      if eat == 1:
        first = 'Шаурма с мясом'    
      if eat == 2:
        first = "Шаурма с курицей"
        print('Что вы будите пить:чай-1, кофе-2, колу-3, минералку-4 ')
        drink = int(input())
        if drink == 1:
          second = 'Чай'
          print("Вы заказали: %s and %s" % (first, second))
        if drink == 2:
          second = 'кофе'
          print("Вы заказали: %s and %s" % (first, second))
        if drink == 3:
          second = 'кола'
          print("Вы заказали: %s and %s" % (first, second))
        if drink == 4:
          second = 'минералка'
          print("Вы заказали: %s and %s" % (first, second))
gil9red
  • 77,085
OxGen
  • 65
  • Посмотрите в той теме https://ru.stackoverflow.com/questions/460207/%D0%95%D1%81%D1%82%D1%8C-%D0%BB%D0%B8-%D0%B2-python-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80-switch-case – SnakeMS Feb 26 '19 at 06:29

2 Answers2

3

Можно вынести в отдельные функции:

def choose_meat():
    print('Хорошо, с чем вам шаурму: мясо-1, курица-2')
    return {1: 'Шаурма с мясом', 2: "Шаурма с курицей"}.get(int(input()))

def choose_drink():
    print('Что вы будете пить: чай-1, кофе-2, колу-3, минералку-4')
    return {1: 'Чай', 2: 'кофе', 3: 'кола', 4: 'минералка'}.get(int(input()))

print('Заказывайте: шаурма-1, самсы-2, пирожки-3')
if int(input()) == 1:
    first = choose_meat()
    second = choose_drink()

# elif ...

print("Вы заказали: %s и %s" % (first, second))
2

Например через словари можно упростить код:

num_by_meat = {1: 'Шаурма с мясом', 2: "Шаурма с курицей"}
num_by_drink = {1: 'Чай', 2: 'кофе', 3: 'кола', 4: 'минералка'}

print('Заказывайте: шаурма-1, самсы-2, пирожки-3') a = int(input()) if a == 1: print('Хорошо, с чем вам шаурму: мясо-1, курица-2') eat = int(input()) first = num_by_meat.get(eat)

print('Что вы будете пить: чай-1, кофе-2, колу-3, минералку-4')

drink = int(input())
second = num_by_drink.get(drink)

elif a == 2:

...

elif a == 3:

...

print(f"Вы заказали: {first} и {second}")

gil9red
  • 77,085