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

Калькулятор сосисок для пикника

26.02.2021, 18:02. Показов 15029. Ответов 21

Студворк — интернет-сервис помощи студентам
Здравствуйте! Задачка из одного хорошего учебника.

Сосиски упакованы в пакеты по 10 штук,
а булочки - в пакеты по 8 штук.
Напишите программу, которая вычисляет количество упаковок с сосисками и количество упаковок с булочками,
необходимых для пикника с МИНИМАЛЬНЫМИ остатками.
Программа должна запросить у пользователя количество
участников пикника и количество хот-догов, которые будут предложены каждому
участнику. Программа должна показать приведенные ниже подробности:
• минимально необходимое количество упаковок с сосисками;
• минимально необходимое количество упаковок с булочками;
• количество оставшихся сосисок;
• количество оставшихся булочек.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
people = int(input("Введите количество людей , которые придут на пикник: "))
hot_dogs = int(input("Введите количество хот-догов , которое будет предложено каждому участнику пикника: "))
count_hot_dogs = people * hot_dogs
if count_hot_dogs % 10 != 0:
    min_package_sausages = count_hot_dogs // 10 + 1
    exstra_sasuges =  min_package_sausages * 10 - count_hot_dogs 
else:
      min_package_sausages = count_hot_dogs // 10
      exstra_sasuges = 0
if count_hot_dogs % 8 != 0:
      min_package_buns = count_hot_dogs // 8 + 1
      exstra_buns = min_package_buns * 8 - count_hot_dogs 
else:
       min_package_buns = count_hot_dogs // 8
       exstra_buns = 0
print("Минимальное количество упаковок с сосисками: ",min_package_sausages)
print("Количество оставшихся сосисок: ",exstra_sasuges)
print("Минимальное количество упаковок с булочками: ",min_package_buns )
print("Количество оставшихся булочек: ",exstra_buns)
Написал код , работает , вопрос
насколько хорошо написана программа?
какие могут быть замечания?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2021, 18:02
Ответы с готовыми решениями:

Нарезка сосисок
Вообщем, пишу олимпиаду по инфе, да вот только не думал, что придется кодить. В школе нам 11 лет ничего не рассказывали, а доп баллы егэ...

Напишите программу, определяющую количество программ для преобразования числа A в число B для исполнителя Калькулятор
Напишите программу, которая определяет количество программ для преобразования числа A в число B для исполнителя Калькулятор. У него есть...

Калькулятор из двух полей для ввода текста, кнопки для выполнения арифметического действия и текстовой строки
Постановка задачи: \ Создайте калькулятор из двух полей для ввода текста, кнопки для выполнения арифметического действия и текстовой...

21
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.02.2021, 18:18
Цитата Сообщение от SkaT_ Посмотреть сообщение
насколько хорошо написана программа?
Нормаш

Не по теме:

С названия темы приорал...


0
Эксперт Python
8849 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
26.02.2021, 18:43
SkaT_, расчеты можно было чуть сократить
Python
1
2
3
4
5
6
7
count_hot_dogs = people * hot_dogs
 
min_package_sausages = (count_hot_dogs + 9) // 10
exstra_sasuges =  min_package_sausages * 10 - count_hot_dogs 
 
min_package_buns = (count_hot_dogs + 7) // 8
exstra_buns = min_package_buns * 8 - count_hot_dogs
Без условий, так как в целых числах...
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,681
Записей в блоге: 29
26.02.2021, 18:46
Цитата Сообщение от SkaT_ Посмотреть сообщение
какие могут быть замечания?
к именам, там где у тебя пипл и хот догс, должны быть количество персон и количество хот-догов на персону, но это мелочи.
0
0 / 0 / 0
Регистрация: 08.09.2021
Сообщений: 11
13.09.2021, 22:02
count_hot_dogs = people * hot_dogs. Объясните пожалуйста, без этого действия эту программу сделать не возможно. Я изначально думал, что например( 8 хотдогов это значит 8 сосисок и 8 булочек, "получается один пакет сосисок с остаткам две штуки" и "один пакет булочек без остатка" Но программа считает по другому.
0
0 / 0 / 0
Регистрация: 12.10.2019
Сообщений: 1
31.07.2022, 09:46
Я вот так решил
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
number_participants = int(input("Количество участников пикника: "))
number_of_hotdogs = int(input("Количество хотдогов: "))
SOSISKI = 10
BULOCHKI = 8
count_hotdogs = number_participants * number_of_hotdogs # Каждому участнику по number_of_hotdogs
if count_hotdogs !=0:
    if count_hotdogs % 10 == 0: 
        min_upak_sosisok = count_hotdogs // SOSISKI 
        print("Минималльное количество упаковок с сосисками:",
                  f"{min_upak_sosisok}, осталось сосисок {count_hotdogs%SOSISKI}")
    else:
        min_upak_sosisok = count_hotdogs // SOSISKI + 1
        print("Минималльное количество упаковок с сосисками:",
                  f"{min_upak_sosisok}, осталось сосисок {SOSISKI - count_hotdogs % SOSISKI}")
        
if count_hotdogs !=0:
    if count_hotdogs % 8 == 0:
        min_upak_bulochek = count_hotdogs // BULOCHKI
        print("Минималльное количество упаковок с булочками:",
                  f"{min_upak_bulochek}, осталось булочек {count_hotdogs%BULOCHKI}")
    else:
        min_upak_bulochek = count_hotdogs // BULOCHKI + 1
        print("Минималльное количество упаковок с булочками:",
                  f"{min_upak_bulochek}, осталось булочек {BULOCHKI - count_hotdogs%BULOCHKI}")
0
0 / 0 / 0
Регистрация: 25.05.2023
Сообщений: 2
25.05.2023, 17:32
всем , здравствуйте. кто-нибудь может вкратце объяснить ход решения . и особенно почему использовали оператор ( %) . заранее всем спасибо
0
0 / 0 / 0
Регистрация: 16.09.2020
Сообщений: 2
22.01.2024, 18:37
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uchastniki = int(input('Введите число участников пикника: '))
hot_dogi = int(input('Введите число хот - догов для каждого участника: '))
itogo = uchastniki * hot_dogi
upak_bul = itogo % 10
upak_sos = itogo % 8
upak_bul_1 = itogo / 10)
upak_sos_1 = itogo / 8)
if upak_bul == 0 and upak_sos == 0:
    print('Нужно полных', upak_bul_1, 'упаковок булочек и', upak_sos_1, 'полных упаковок сосисок.')
elif upak_bul == 0 and upak_sos != 0:
    print('Нужно полных', upak_bul_1, 'упаковок булочек,', upak_sos_1, 'полных упаковок сосисок и ', upak_sos, 'оставшихся сосисок.')
elif upak_bul != 0 and upak_sos == 0:
    print('Нужно полных', upak_bul_1, 'упаковок булочек,', upak_bul, 'оставшихся булочек и', upak_sos_1, 'полных упаковок сосисок.')
else:
     print('Нужно полных', upak_bul_1, 'упаковок булочек и', upak_bul, 'оставшихся булочек плюс', upak_sos_1, 'полных упаковок сосисок и', upak_sos, 'оставшихся сосисок.')
0
1 / 1 / 0
Регистрация: 22.06.2024
Сообщений: 11
29.06.2024, 00:17
Вот как я аккуратно решил что бы самому понятней было и остальным.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
people = int(input("Введите кол-во людей на пикнике: "))
hot_dogs = int(input("Введите кол-во хот-догов каждому: "))
all_dogs = people * hot_dogs
if all_dogs % 10 != 0:
    a = all_dogs // 10 + 1
    b = a * 10 - all_dogs
    c = all_dogs // 8 + 1
    d = c * 8 - all_dogs
    print(f'Мин упак сос: {a}')
    print(f'кол-во остат. сос: {b}')
    print(f'мин упак бул: {c}')
    print(f'кол-во остат. бул: {d}')
else:
    a = all_dogs // 10
    b = a * 10 - all_dogs
    c = all_dogs // 8 + 1
    d = all_dogs % 8
    print(f'Мин упак сос: {a}')
    print(f'кол-во остат. сос: {b}')
    print(f'мин упак бул: {c}')
    print(f'кол-во остат. бул: {d}')
Добавлено через 33 секунды
467, % это остаток от деления, здесь нужен для нахождения остатка булок, когда все хотдоги кратны десяти 10, 20 ... итд
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.06.2024, 15:26
DrakkarUbisoft, так без дублирования кода:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
people = int(input("Введите кол-во людей на пикнике: "))
hot_dogs = int(input("Введите кол-во хот-догов каждому: "))
 
all_dogs = people * hot_dogs
if all_dogs % 10 != 0:
    a = all_dogs // 10 + 1
    b = a * 10 - all_dogs
    c = all_dogs // 8 + 1
    d = c * 8 - all_dogs
else:
    a = all_dogs // 10
    b = a * 10 - all_dogs
    c = all_dogs // 8 + 1
    d = all_dogs % 8
 
print(f'Мин упак сос: {a}')
print(f'кол-во остат. сос: {b}')
print(f'мин упак бул: {c}')
print(f'кол-во остат. бул: {d}')
2
1 / 1 / 0
Регистрация: 22.06.2024
Сообщений: 11
29.06.2024, 18:34
Рыжий Лис, Да, чет тупанул. Спасибо
0
0 / 0 / 0
Регистрация: 20.02.2025
Сообщений: 1
20.02.2025, 12:58
Добрый день, извините за некропост.
Стал изучать Python с нуля, все бьюсь с этой задачей.
Никак не могу понять как получить остаток сосисок.

допустим у нас 2 участника, которые выбрали 9 хот-догов.
итого: 1,8 упаковки, 18 хотдогов на двоих.
а дальше никак не возьму в толк как посчитать разницу.
по идее затратим на все это 2 упаковки хот - догов (20 штук).
Таким образом из общего количества штук сосисок в 2 упаковках (20) надо вычесть 18 хотдогов чтобы получить остаток хот-догов (2).
Но вот как облечь это в код?
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
20.02.2025, 13:56
Цитата Сообщение от AlZm Посмотреть сообщение
Но вот как облечь это в код?
Так, а примеры кода выше, чем не подходят?
0
0 / 0 / 0
Регистрация: 24.08.2025
Сообщений: 1
24.08.2025, 20:08
если all_dogs будет равен 16 то получится что одна пачка лишняя так как сдесь + 1 " all_dogs // 8 + 1 " по этому я добавил доп условия вот эти
Python
1
2
3
4
5
6
 if all_dogs % 8 != 0:
        c = all_dogs // 8 + 1
        d = c * 8 - all_dogs  
    else:
        c = all_dogs // 8
        d = c * 8 - all_dogs
вместо вот этих одних
Python
1
2
c = all_dogs // 8 + 1
 d = c * 8 - all_dogs
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
people = int(input("Введите кол-во людей на пикнике: "))
hot_dogs = int(input("Введите кол-во хот-догов каждому: "))
 
all_dogs = people * hot_dogs
if all_dogs % 10 != 0:
    a = all_dogs // 10 + 1
    b = a * 10 - all_dogs
    if all_dogs % 8 != 0:
        c = all_dogs // 8 + 1
        d = c * 8 - all_dogs  
    else:
        c = all_dogs // 8
        d = c * 8 - all_dogs
else:
    a = all_dogs // 10
    b = a * 10 - all_dogs
    if all_dogs % 8 != 0:
        c = all_dogs // 8 + 1
        d = c * 8 - all_dogs  
    else:
        c = all_dogs // 8
        d = c * 8 - all_dogs
 
print(f'Мин упак сос: {a}')
print(f'кол-во остат. сос: {b}')
print(f'мин упак бул: {c}')
print(f'кол-во остат. бул: {d}')
0
Вирусоборец
 Аватар для thyrex
14445 / 7486 / 1580
Регистрация: 06.09.2009
Сообщений: 27,129
25.08.2025, 00:54
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
p = int(input('Количество людей , которые придут на пикник: '))
hd = int(input('Количество хот-догов, которое будет предложено каждому участнику пикника: '))
total = p*hd
p1 = 10 # сосисок в упаковке
p2 = 8 # булочек в упаковке
min_p1 = (total+p1-1)//p1 
extra_s = (p1-total%p1)%p1
min_p2 = (total+p2-1)//p2 
extra_b = (p2-total%p2)%p2
print('Минимальное количество упаковок с сосисками: ', min_p1)
print('Количество оставшихся сосисок: ', exstra_s)
print('Минимальное количество упаковок с булочками: ', min_p2)
print('Количество оставшихся булочек: ', exstra_b)
1
0 / 0 / 0
Регистрация: 15.09.2025
Сообщений: 6
26.09.2025, 15:18
Если прям совсем без дублирования:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
people = int(input("Введите кол-во людей на пикнике: "))
hot_dogs = int(input("Введите кол-во хот-догов каждому: "))
all_dogs = people * hot_dogs
 
a = all_dogs // 10 + (all_dogs % 10 > 0)  # аналог условия if all_dogs % 10 != 0.
                                          #Плюсует значение True (1), если нужно добавить упаковку,
                                          #или False (0), если добавлять упаковку не нужно
b = a * 10 - all_dogs
c = all_dogs // 8 + (all_dogs % 8 > 0)
d = c * 8 - all_dogs
print(f'Мин упак сос: {a}')
print(f'кол-во остат. сос: {b}')
print(f'мин упак бул: {c}')
print(f'кол-во остат. бул: {d}')
0
0 / 0 / 0
Регистрация: 15.09.2025
Сообщений: 6
29.09.2025, 08:33
Ещё один вариант без дублирования:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
people = int(input("Введите кол-во людей на пикнике: "))
hot_dogs = int(input("Введите кол-во хот-догов каждому: "))
all_dogs = people * hot_dogs
 
a = -(all_dogs // -10)  #  используется свойство целочисленного деления в Пайтон:
                        #  результат вычисления оператора // всегда округляет результат
                        #  в сторону отрицательной бесконечности/
                        #  вместо умножения результата деления на -1
                        #  можно использовать функцию возвращения модуля - abs()
b = a * 10 - all_dogs
c = -(all_dogs // -8)
d = c * 8 - all_dogs
print(f'Мин упак сос: {a}')
print(f'кол-во остат. сос: {b}')
print(f'мин упак бул: {c}')
print(f'кол-во остат. бул: {d}')
0
 Аватар для andrey_f
884 / 537 / 228
Регистрация: 21.02.2011
Сообщений: 5,705
30.09.2025, 10:54
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def main():
    people = int(input("Количество людей: "))
    hot_dogs_pp = int(input("Хот-догов на человека: "))
    
    total = people * hot_dogs_pp
    sausages, buns = 10, 8
    
    # Используем математику для округления вверх
    packs_sausages = -(-total // sausages) 
    packs_buns = -(-total // buns)
    
    print(f"\nУпаковок сосисок: {packs_sausages} (остаток: {packs_sausages * sausages - total})")
    print(f"Упаковок булочек: {packs_buns} (остаток: {packs_buns * buns - total})")
 
if __name__ == "__main__":
    main()
0
0 / 0 / 0
Регистрация: 21.09.2025
Сообщений: 2
17.11.2025, 15:31
Тоже начал изучать питон с нуля. Наткнулся на эту задачу. Смотрю на решения других и не понимаю почему нельзя так сделать?

BULOCHKI = 8
SOSISKI = 10

people = int(input('Сколько человек '))
hot_dog = int(input('Сколько хот догов на человека? '))

hotdog_nado = people * hot_dog
bul_nado = hotdog_nado // BULOCHKI
sos_nado = hotdog_nado // SOSISKI
bul_ost = hotdog_nado % BULOCHKI
sos_ost = hotdog_nado % SOSISKI

print(f'На {people} человек нужно:\n'
f'{bul_nado} упаковок булочек;\n'
f'{sos_nado} упаковок сосисок.\n'
f'Остаток:\n'
f'{bul_ost} булочек;\n'
f'{sos_ost} сосисок.')
0
1192 / 761 / 128
Регистрация: 10.03.2012
Сообщений: 4,913
17.11.2025, 17:01
Цитата Сообщение от a6cd Посмотреть сообщение
Смотрю на решения других и не понимаю почему нельзя так сделать?
Если у вас результат верный, то можно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2025, 17:01
Помогаю со студенческими работами здесь

Как преобразовать обычный калькулятор в калькулятор использующий класс стек?
#include <iostream> int main(){ int a = 0; int b = 0; char operation; std::cout << "Enter first number: "; ...

Подраздел «Калькулятор» (выводится при установке плагина «калькулятор», возможность редактировать параметры че
Подраздел «Калькулятор» (выводится при установке плагина «калькулятор», возможность редактировать параметры через админку)

Калькулятор для формул
Ребята, всем привет!!! Очень нужна ваша помощь в написании программы на форме что-то типо калькулятора, только по формулам. На первую...

Калькулятор для ИгроХоста
Здравствуйте, мне срочно нужно сделать для своего хостинга расчетную машинку! Вот на этих сайтах есть пример: Ссылка1, Ссылка2. Мне...

Калькулятор для формулы
Завтра зачет, к данной форме не могу написать код чтобы, когда вписываю числа вот их посчитать


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru