помогите по python

DB
На сайте с 15.08.2018
Offline
22
583

Привет, есть задачка, только не ржите

Калькулятор сосисок для пикника. Допустим, что сосиски упакованы в пакеты по
10 штук, а булочки - в пакеты по 8 штук. Напишите программу, которая вычисляет
количество упаковок с сосисками и количество упаковок с булочками, необходимых для
пикника с минимальными остатками. Программа должна запросить у пользователя количество
участников пикника и количество хот-догов, которые будут предложены каждому
участнику. Программа должна показать приведенные ниже подробности:
• минимально необходимое количество упаковок с сосисками;
• минимально необходимое количество упаковок с булочками;
• количество оставшихся сосисок;
• количество оставшихся булочек.

вот решение


import math
sos = 10
bull = 8

people = int(input('ВВведите кол-во участников: '))
hotdog = int(input('Введите кол-во хотдогов: '))

sum_hotdog = people * hotdog

if sum_hotdog == 0:
print('Вам не требуются продукты')
else:
if sum_hotdog <= sos and sum_hotdog <= bull:
up_sos = 1; up_bull = 1
end_sos = sos-sum_hotdog; end_bull = bull - sum_hotdog
elif sum_hotdog > sos and sum_hotdog > bull:
up_sos = math.ceil(sum_hotdog/sos); up_bull = math.ceil(sum_hotdog/bull)
end_sos = (up_sos*sos) - sum_hotdog; end_bull = (up_bull*bull)-sum_hotdog
else:
up_sos = 1; up_bull = math.ceil(sum_hotdog/bull)
end_sos = sos - sum_hotdog; end_bull = (up_bull*bull)-sum_hotdog

print('Требуется упаковок сосисок', up_sos, 'Требуется упаковок булочек', up_bull)
print('Останется сосисок', end_sos, 'Останется булочек', end_bull)

может я чего не знаяю, но мне кажется что последний else вообще только для значения булочек 9, и если изменить условие в начале, типа в упаковке сосисок будет 8 а булочек 10, то лезу в отрицательные значения...вообще как это оптимизировать, так как писать еще одно условие вообще не тема.

Z
На сайте с 24.11.2008
Offline
149
#1

в поисковиках ввести чото типа "python операции"

операции // и %

up_sos = sum_hotdog // sos

end_sos = sum_hotdog % sos

аналогично для булок...

DB
На сайте с 15.08.2018
Offline
22
#2

такая логика, без math получилась и можно менять условие по кол-ву в упаковках.


sos = 10
bull = 8

people = int(input('ВВведите кол-во участников: '))
hotdog = int(input('Введите кол-во хотдогов: '))

sum_hotdog = people * hotdog

if sum_hotdog == 0:
print('Вам не требуются продукты')
else:
up_sos = sum_hotdog % sos
up_bull = sum_hotdog % bull
if up_sos in range(1,10) and up_bull in range(1,10):
up_sos = (sum_hotdog//sos)+1
up_bull = (sum_hotdog//bull)+1
elif up_sos == 0 and up_bull in range(1,10):
up_sos = sum_hotdog//sos
up_bull = (sum_hotdog//bull)+1
elif up_sos in range(1,10) and up_bull == 0:
up_sos = (sum_hotdog//sos)+1
up_bull = sum_hotdog//bull
else:
up_sos = sum_hotdog//sos
up_bull = sum_hotdog//bull
end_sos = (up_sos*sos)-sum_hotdog
end_bull = (up_bull*bull)-sum_hotdog

print('Требуется упаковок сосисок', up_sos, 'Требуется упаковок булочек', up_bull)
print('Останется сосисок', end_sos, 'Останется булочек', end_bull)
Z
На сайте с 24.11.2008
Offline
149
#3

"мы вам перезвоним" :D

W
На сайте с 08.02.2017
Offline
161
#4
Dr_Brown:
такая логика, без math получилась и можно менять условие по кол-ву в упаковках.

какой вы ужас нагородили, решается в 7 строк

people = int(input('ВВведите кол-во участников: '))

hotdog = int(input('Введите кол-во хотдогов: '))

sum_hotdog = people * hotdog

sos_upak = sum_hotdog // 10

bull_upak = sum_hotdog // 8

sos_ostalos = sum_hotdog % 10

bull_ostalos = sum_hotdog % 8

Комплексный аудит ИМ. Формирование УТП, анализ юзабилити, каналов продвижения. Контекстная реклама, настройка систем аналитики. Консультация - бесплатно, в ЛС
Twickbot
На сайте с 13.03.2017
Offline
56
#5
wicker:
какой вы ужас нагородили, решается в 7 строк

Вы верной дорогой пошли, но, тоже ошиблись.

1. sos_upak и bull_upak надо вычислять с добавлением одной пачки, при условии, что деление производится с остатком.

Если без остатка, то 1 прибавлять не надо.

Иначе, например при 1 участнике, который захочет 2 хотдога получиться 0 sos_upak и 0 bull_upak.

2. Забыли вывод, а это + 1 строчка.

Автоматизация работы в браузере. Пишу парсеры, постеры, кликеры, лайкеры, и т.п.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий