Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/43: Рейтинг темы: голосов - 43, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.05.2021
Сообщений: 2

Задача селектор ресторанов, как написать используя if elif else

19.05.2021, 18:57. Показов 11402. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить!!!
Селектор ресторанов. На вашу встречу выпускников собирается прибыть группа ваших
друзей, и вы хотите их повести в местный ресторан на ужин. Вы не уверены, что ваши
друзья придерживаются диетических ограничений, но ваши варианты выбора ресторана
будут такими.
  • Изысканные гамбургеры от Джо - вегетарианская: нет, веганская (строгая вегетарианская): нет, безглютеновая: нет.
  • Центральная пиццерия - вегетарианская: да, веганская: нет, безглютеновая: да.
  • Кафе за углом - вегетарианская: да, веганская: да, безглютеновая: да.
  • Блюда от итальянской мамы - вегетарианская: да, веганская: нет, безглютеновая: нет.
  • Кухня шеф-повара - вегетарианская: да, веганская: да, безглютеновая: да.
Напишите программу, которая запрашивает, есть ли в группе вегетарианцы, веганцы либо
приверженцы безглютеновой диеты, после чего она выводит только те рестораны,
в которые можно повести группу друзей. Вот пример вывода программы:
Будет ли на ужине вегетарианец? да
Будет ли на ужине веганец? нет
Будет ли на ужине приверженец безглютеновой диеты? да
Вот ваши варианты ресторанов:
Центральная пиццерия
Кафе за углом
Кухня шеф-повара
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.05.2021, 18:57
Ответы с готовыми решениями:

Задача с использованием if-elif
Пожалуйста !

Как написать селектор с 2мя значениями
Распаршиваю сайтец... У меня идут попеременно блоки odd и even Мне надо их спарсить в один массив. Реализуемо?

Посчитать количество слов используя только for range, while, if, elif, else
Помогите пожалуйста решить: "Посчитать количество слов во введенной пользователем фразе. При решении использовать только элементарные...

32
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
19.05.2021, 19:44
Maxim1701,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from collections import namedtuple
 
Cafe = namedtuple('Cafe', 'name is_vegetarian is_vegan is_no_glu')
 
joes = Cafe('Изысканные гамбургеры от Джо', False, False, False)
central_pizza = Cafe('Центральная пиццерия', True, False, True)
corner = Cafe('Кафе за углом', True, True, True)
italian = Cafe('Блюда от итальянской мамы', True, False, False)
chief = Cafe('Кухня шеф-повара', True, True, True)
restaraunts = (joes, central_pizza, corner, italian, chief)
 
is_vegetarian = input('Будет ли на ужине вегетарианец?').lower() == 'да'
 
is_vegan = input('Будет ли на ужине веганец?').lower() == 'да'
 
is_no_glu = input('Будет ли на ужине приверженец безглютеновой диеты?').lower() == 'да'
 
conditions = (is_vegetarian, is_vegan, is_no_glu)
print('Вот ваши варианты ресторанов:')
for cafe in restaraunts:
    for index, condition in enumerate(conditions):
        if not condition:
            continue
        if condition != cafe[1 + index]:
            break
    else:
        print(cafe.name)
Code
1
2
3
4
5
6
7
Будет ли на ужине вегетарианец?да
Будет ли на ужине веганец?нет
Будет ли на ужине приверженец безглютеновой диеты?да
Вот ваши варианты ресторанов:
Центральная пиццерия
Кафе за углом
Кухня шеф-повара
Добавлено через 43 секунды

Не по теме:

но я б конечно задумался на кой мне такие друзья

6
0 / 0 / 0
Регистрация: 19.05.2021
Сообщений: 2
19.05.2021, 20:51  [ТС]
Спасибо, хотелось бы узнать возможно ли решение используя if elif и else? В данный момент занимаюсь самообучением, задача из конца главы из книги, глава про структуры приятия решения. Предполагаю что задача должна решаться используя if elif else.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
20.05.2021, 07:50
Цитата Сообщение от Maxim1701 Посмотреть сообщение
хотелось бы узнать возможно ли решение используя if elif и else?
конечно возможно! через if - elif-else можно нейросеть написать чего уж там. Так что пробуй.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
20.05.2021, 11:31
Цитата Сообщение от Maxim1701 Посмотреть сообщение
хотелось бы узнать возможно ли решение используя if elif и else?
а представленный ответ что по вашему юзает?
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
21.05.2021, 08:43
Цитата Сообщение от Welemir1 Посмотреть сообщение
is_vegan = input('Будет ли на ужине веганец?').lower() == 'да'
скажите как эту запись охарактеризовать? я про то что когда есть == должен быть иф или вайл, но их нет..........
спс
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
21.05.2021, 08:50
охарктеризовать как проверка на равенство со словом да. Если будет да, то в переменную получим True, иначе False
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
21.05.2021, 08:51
ясно, спасибо
0
0 / 0 / 0
Регистрация: 21.07.2021
Сообщений: 1
21.07.2021, 13:57
Добрый день! Вы занимаетесь по "Начинаем программировать на Python, Тони Гэддис"?
Тоже очень долго думала над этим заданием в конце третьей главы. Ответ выше был непонятен, тк нет еще таких знаний. Вот каким образом удалось решить по-простому))
P.S. только текст и рестораны на английском, так удобней писать.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
print('Type who will be on a dinner (yes/no)')
x = input('vegitarian: ')
y = input('vegan: ')
z = input('nongluten: ')
print('Your restaraunt options:')
 
if x == 'yes':
    result_x = True
else:
    result_x = False
if y == 'yes':
    result_y = True
else:
    result_y = False
if z == 'yes':
    result_z = True
else:
    result_z = False
 
 
if result_x and result_y and result_z:
    print('Coffee-house')
    print('Chef-kitchen')
elif result_x and result_y:
    print('Coffee-house')
    print('Chef-kitchen')
elif result_x and result_z:
    print('Central pizza')
    print('Coffee-house')
    print('Chef-kitchen')
elif result_y and result_z:
    print('Coffee-house')
    print('Chef-kitchen')
if not result_x and not result_y and not result_z:
    print('Joe burgers')
    print('Coffee-house')
    print('Chef-kitchen')
    print('Central pizza')
    print('Italian mama')
elif not result_x and not result_y:
    print('Coffee-house')
    print('Chef-kitchen')
    print('Central pizza')
elif not result_x and not result_z:
    print('Coffee-house')
    print('Chef-kitchen')
elif not result_y and not result_z:
    print('Central pizza')
    print('Coffee-house')
    print('Chef-kitchen')
    print('Italian mama')
0
0 / 0 / 0
Регистрация: 22.09.2021
Сообщений: 1
22.09.2021, 21:29
Если по книге, то так проще всего.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
veget = input('Будет ли на ужине вегетарианец ?: ')
vegan = input('Будет ли на ужене веганец ?: ')
gluten = input('Будет ли на ужене приверженец глютеновой диеты ?: ')
if veget == 'да' and vegan == 'да' and gluten == 'да':
    print('Кафе за углом\nКухня шеф-повара')
elif veget == 'да' and vegan == 'да' and gluten == 'нет':
    print('Кафе за углом\nКухня шеф-повара')
elif veget == 'да' and vegan == 'нет' and gluten == 'нет':
    print('Центральная пиццерия\nКафе за углом\nБлюда от итальянской мамы \
          \nКухня шеф-повара')
elif veget == 'нет' and vegan == 'нет' and gluten == 'нет':
    print('Изысканные гамбургеры от Джо\nЦентральная пиццерия\nКафе за углом\
          \nБлюда от итальянской мамы\nКухня шеф-повара')
elif veget == 'нет' and vegan == 'нет' and gluten == 'да':
    print('Центральная пиццерия\nКафе за углом\nКухня шеф-повара')
elif veget == 'нет' and vegan == 'да' and gluten == 'да':
    print('Кафе за углом\nКухня шеф-повара')
else:
    print('Кафе за углом\nКухня шеф-повара')
0
0 / 0 / 0
Регистрация: 14.02.2022
Сообщений: 1
14.02.2022, 12:56
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
yes = 'да'
no = 'нет'
print('Ваши варианты ресторанов :')
veg = str(input('Будет ли на ужине вегетариенец? '))
weg = str(input('Будет ли на ужине веганец? '))
glut = str(input('удет ли на ужине приверженец безглютега? '))
if veg == no and weg == no and glut == no:
    print('Гамбургеры от Джо')
if veg == yes and weg == no and glut == yes:
    print('Центральная пицерия')
if veg == yes and weg == yes and glut == yes:
    print('Кафе за углом')
if veg == yes and weg == no and glut == no:
    print('Блюда от итальянской мамы')
if veg == yes and weg == yes and glut == yes:
    print('Кухня от шеф повара')
0
4 / 3 / 1
Регистрация: 08.08.2017
Сообщений: 20
19.03.2022, 23:59
Цитата Сообщение от Alf_Python Посмотреть сообщение
Ваши варианты ресторанов :')
Цитата Сообщение от DimaMDL Посмотреть сообщение
Если по книге, то так проще всего.
Мне кажется два последних варианта работают некорректно. При ответе "да нет да" должно быть 3 варианта, а у вас 2 и 1.
Предлагаю свой вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
veget = input("Есть вегетарианцы? ")
vegan = input("Есть веганы?")
glut = input("Есть безглютенщики?")
 
if veget == "нет" and vegan == "нет" and glut == "нет":
    print("Изысканные бургеры от Джо")
 
if vegan == "нет":
    print("Центральная пиццерия")
 
print("Кафе за углом")
 
if vegan == "да" or glut == "да":
    pass
else:
    print("Блюда от итальянской мамы")
 
print("Кухня шеф-повара")
0
0 / 0 / 0
Регистрация: 16.04.2022
Сообщений: 1
16.04.2022, 13:22
Я написал в таком порядке код. Но немогу избавится от вывода в print True

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
vegan = str(input("Будут вегитарианцы? "))
veg = str(input("Будут веганы? "))
gl = str(input("Будут приверженцы безглютена? "))
 
djo = vegan == 'нет' and veg == 'нет' and gl == 'нет'
pizza = vegan == 'да' or veg == 'нет' and gl == 'да'
cafe = vegan == 'да' or veg == 'да' or gl == 'да'
maver = vegan == 'да' and veg == 'нет' and gl == 'нет'
saf = vegan == 'да' or veg == 'да' or gl == 'да'
 
if djo == True:
    print ("Джо", djo)
if pizza == True:
    print ("Пица", pizza)
if cafe == True:
    print ("Кофе", cafe)
if maver == True:
    print ("Мама", maver)
if saf == True:
    print ("Шэф-повар", saf)
else:
    print("Что то пошло не так")
Добавлено через 13 минут
pizza = vegan == 'да' AND veg == 'нет' and gl == 'да'
забыл поправить....эксперементировал
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
16.04.2022, 20:33
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
is_veget = is_glut_free = is_vegan = input('Будет ли на ужине веган? (да/нет): ').lower() == 'да'
if not is_vegan:
    is_veget = is_glut_free = input('Будет ли на ужине приверженец '
                                    'безглютеновой диеты? (да/нет): ').lower() == 'да'
if not is_glut_free:
    is_veget = input('Будет ли на ужине вегетарианец? (да/нет): ').lower() == 'да'
print()
print('Вот ваши варианты ресторанов:')
print()
if not is_veget:
    print('1) Изысканные гамбургеры от Джо (НЕ вегет, НЕ безглют, НЕ веган)')
if not is_glut_free:
    print('2) Блюда от итальянской мамы (вегет)')
if not is_vegan:
    print('3) Центральная пиццерия (вегет, безглют)')
if True:
    print('4) Кафе за углом (вегет, безглют, веган)')
    print('5) Кухня шеф-повара (вегет, безглют, веган)')
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
17.04.2022, 18:59
Так поаккуратнее будет:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
is_veget = is_glut_free = is_vegan = input('Будет ли на ужине веган? (да/нет): ').lower() == 'да'
if not is_vegan:
    is_veget = is_glut_free = input('Будет ли на ужине приверженец '
                                    'безглютеновой диеты? (да/нет): ').lower() == 'да'
if not is_glut_free:
    is_veget = input('Будет ли на ужине вегетарианец? (да/нет): ').lower() == 'да'
print()
print('Вот ваши варианты ресторанов:')
print()
if not is_veget:
    print('1) Изысканные гамбургеры от Джо (НЕ вегет, НЕ безглют, НЕ веган)')
if not is_glut_free:
    print('2) Блюда от итальянской мамы (вегет)')
if not is_vegan:
    print('3) Центральная пиццерия (вегет, безглют)')
print('4) Кафе за углом (вегет, безглют, веган)')
print('5) Кухня шеф-повара (вегет, безглют, веган)')
0
0 / 0 / 0
Регистрация: 01.05.2022
Сообщений: 5
03.05.2022, 18:50
Добрый день!
А вот так пойдет? Или это будет считаться как "некрасивый" код?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
a = input('Будет ли на ужине вегетарианец? ')
b = input('Будет ли на ужине веганец? ')
c = input('Будет ли на ужине приверженец безглютеновой диеты? ')
print('Ваши варианты ресторанов:')
if a == 'да' and b == 'да' and c == 'да':
      print('Кафе за углом\n'
            'Кухня шеф повара')
elif a == 'нет' and b == 'да' and c == 'да':
      print('Кафе за углом\n'
            'Кухня шеф повара')
elif a == 'да' and b == 'нет' and c == 'да':
      print('Центральная пиццерия\n'
            'Кафе за углом\n'
            'Кухня шеф повара')
elif a == 'да' and b == 'да' and c == 'нет':
      print('Кафе за углом\n'
            'Кухня шеф повара')
elif a == 'нет' and b == 'нет' and c == 'да':
      print('Центральная пиццерия\n'
            'Кафе за углом\n'
            'Кухня шеф повара')
elif a == 'нет' and b == 'да' and c == 'нет':
      print('Кафе за углом\n'
            'Кухня шеф повара')
elif a == 'да' and b == 'нет' and c == 'нет':
      print('Центральная пиццерия\n'
            'Блюда от итальянской мамы\n'
            'Кафе за углом\n'
            'Кухня шеф повара')
elif a == 'нет' and b == 'нет' and c == 'нет':
      print('Изысканные гамбургеры от Джо\n'
            'Центральная пиццерия\n'
            'Блюда от итальянской мамы\n'
            'Кафе за углом\n'
            'Кухня шеф повара')
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.05.2022, 19:12
marat55, дело не в красивости. А что, если добавится еще пяток критериев? Ты представляешь, какая портянка получится? А в код ув.Welemir1 например, достаточно будет подбросить пяток строк.
1
0 / 0 / 0
Регистрация: 01.05.2022
Сообщений: 5
03.05.2022, 21:01
iSmokeJC, спасибо за ответ. Но к сожалению писать такой код ка у Welemir1 не могу.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
04.05.2022, 02:49
Цитата Сообщение от iSmokeJC Посмотреть сообщение
достаточно будет подбросить пяток строк
Ну, если так написать, то тоже очень удобно будет добавлять критерии по мере надобности:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
key =   str(   int( input('Будет ли на ужине вегетарианец? (да/нет): ').lower() == 'да' ) )\
        + str( int( input('Будет ли на ужине безглютенец? (да/нет) : ').lower() == 'да' ) )\
        + str( int( input('Будет ли на ужине веган? (да/нет)       : ').lower() == 'да' ) )
d = {
    '1) Изысканные гамбургеры от Джо (НЕ вегет, НЕ безглют, НЕ веган)'  : '000',
    '2) Блюда от итальянской мамы (вегет)'                              : '100',
    '3) Центральная пиццерия (вегет, безглют)'                          : '110',
    '4) Кафе за углом (вегет, безглют, веган)'                          : '111',
    '5) Кухня шеф-повара (вегет, безглют, веган)'                       : '111',
}
bin_str_to_int   = lambda s: int(s, 2)
impl             = lambda x,y: ~x | y
impl_for_bin_str = lambda s1, s2: impl( bin_str_to_int(s1), bin_str_to_int(s2) )
print()
print('Вот ваши варианты ресторанов:')
print()
for name, rest_key in d.items():
    if impl_for_bin_str( key, rest_key ) == ~0:
        print(name)
0
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 8
09.06.2022, 17:59
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vet = input('Будет ли на ужине вегетарианец?: ')
van = input('Будет ли на ужене веганец?:  ')
glu = input('Будет ли на ужене приверженец глютеновой диеты?: ')
a1 = 'Изысканенные гамбурегры'
a2 = 'Центральная пиццерия'
a3 = 'Кафе за углом'
a4 = 'Бюда итальяноской мамы'
a5 = 'Кухня шеф-повара'
if vet == 'нет' and van == 'нет' and glu == 'нет':
    print(a1,a2,a3,a4,a5,sep='\n')
elif vet == 'да' and van == 'да' and glu == 'да':
    print(a3,a5,sep='\n')
elif vet == 'да' and van == 'нет' and glu == 'нет':
    print(a2,a3,a4,a5,sep='\n')
elif vet == 'да' and van == 'нет' or van =='да' and glu == 'да':
    print(a2,a3,a5,sep='\n')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2022, 17:59
Помогаю со студенческими работами здесь

Узнать, является ли фраза палиндромом используя только: while, if, elif , else
Подскажите, как узнать, является ли фраза палиндромом (исключая пробелы и знаки препинания) с помощью только: цикла while и ветвлений if,...

подскажите как написать правильный css селектор для jsoup. Пожалуйста!
Здравствуйте, помогите мне пожалуйста написать правильный запрос в селекторе, чтобы текст (представленный как элемент) был соединён в один...

Дано целое число R. Пусть k - остаток от деления (5R + 2)2 на 1 Вычислить u, вычислить f, используя elif
Доброго времени суток, помогите с решением данной задачи, заранее спасибо

Написать селектор
Здравствуйте. Помогите пожалуйста написать селектор. Нужно выбрать теги с определённым значением одного атрибута внутри тега с определённым...

Написать правильно селектор
Есть код, и селекторы типа Как написать такую выборку, что бы уменьшить количество селекторов в коде? <!DOCTYPE html> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru