Нужна помощь решить задачу по Python "Подарок лепрекона"
Задача №15 "Подарок лепрекона"
Маленький зелёный человечек за добрые дела может отблагодарить скромным серебряным шиллингом, который будет возвращаться к владельцу, а жадине может подарить золотой, который скоро превратится в кусок коры или рассыплется пеплом. Напишите программу для определения подарка от лепрекона.
Формат ввода:
Вводятся строки:
добрый
,злой
илиКакой подарок?
пока не будет введена пустая строка.Формат вывода
Считается количество введенных строк разного типа и на вопрос о подарке выводится ответ. Если строк
добрый
было больше, чем строкзлой
, и последняя строкадобрый
, то подароксеребряный шиллинг
. Если больше было строкзлой
и такая же последняя введенная, то подарок –золотой
. Если вопрос задан при неопределенном значении подарка, выводится:Ах, не знаю!
и программа завершает работу.После каждого вопроса строки считаются заново.
Пример Ввод:
добрый
добрый
добрый
злой
добрый
злой
добрый
Какой подарок?
злой
добрый
злой
злой
добрый
Какой подарок?
добрый
добрый
Вывод:
серебряный шиллинг
Ах, не знаю!
написал следующий код:
def f():
while True:
good = 0
bad = 0
last = ''
for word in iter(input, ''):
if word == 'добрый':
good += 1
last = 'добрый'
elif word == 'злой':
bad += 1
last = 'злой'
elif word == 'Какой подарок?':
if good > bad and last == 'добрый':
print('серебряный шиллинг')
elif bad > good and last == 'злой':
print('золотой')
else:
print('Ах, не знаю!')
good = 0
bad = 0
break
else:
print('Ах, не знаю!')
break
f()
но его преподователь не принимает по причине:
Ожидаемый результат
серебряный шиллинг
Ах, не знаю!
Вывод
серебряный шиллинг
Ах, не знаю!
Ах, не знаю!
Ответы (1 шт):
def f():
while True:
good = 0
bad = 0
last = ''
for word in iter(input, ''):
if word == 'добрый':
good += 1
last = 'добрый'
elif word == 'злой':
bad += 1
last = 'злой'
elif word == 'Какой подарок?':
if good > bad and last == 'добрый':
print('серебряный шиллинг')
elif bad > good and last == 'злой':
print('золотой')
else:
print('Ах, не знаю!')
good = 0
bad = 0
break
else:
break
f()
После выхода из цикла не надо писать что "Ах, не знаю!", потому что у тебя в цикле идет проверка на подарок