1 / 1 / 0
Регистрация: 15.02.2019
Сообщений: 8

Длинный чек

22.02.2019, 16:03. Показов 38387. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для работы небольшого магазинчика вас попросили сделать небольшой набор функций, обеспечивающих работу с чеками. В качестве пробной версии вам нужно реализовать всего два действия: добавление покупки к набору покупаемых товаров, и печать чека. После того как чек напечатан должно быть возможно вводить новый список товаров.
По правилам оформления документов в каждом чеке вы должны напечатать сначала номер чека (нумерация начинается с единицы) и число товаров, затем список товаров с ценами и в конце — итоговую стоимость. Из-за того, что вы не знаете число товаров, пока кассир не «пробьет» последний товар, нельзя печатать чек по мере ввода товаров. Приходится сначала добавить все необходимые товары и только затем печатать весь чек целиком. В конце чека печатается черта (состоящая из пяти знаков минус), по которой он отрывается от ленты.
Организуйте две функции: add_item(itemName, itemCost) и print_receipt(), которые реализуют указанный функционал. Форматирование сделайте по шаблону в примере.
В случае, когда чек пуст, print_receipt не должна печатать чек. Не забудьте, что после того как чек напечатан, набор выбранных товаров должен обнулиться, чтобы можно было вводить товары для нового чека.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2019, 16:03
Ответы с готовыми решениями:

Длинный чек
Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или...

Интерактивный чек
Вам дан файл в формате csv с ценами на товары некоторого магазина (например, такой), содержащий название товара и его цену через...

Длинный плакат
Юный художник Вася нарисовал плакат с очень большим числом и решил повесить его на самую длинную стену школы. К сожалению, даже самая...

12
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
22.02.2019, 16:11
yugin234, напишите сначала свою версию реализации...
и пример входных данных и выхода напишите.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
22.02.2019, 16:19
yugin234, да, нужно определить несколько функций со списками

Хранилище чеков
Хранилище товаров
Функция "чек" - туда вводятся товары а потом сохраняются

что еще?
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
22.02.2019, 19:12
Цитата Сообщение от yugin234 Посмотреть сообщение
пока кассир не «пробьет» последний товар
а какой признак последнего товара?
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
22.02.2019, 19:59
А если 2 единицы одного товара?

Добавлено через 2 минуты
yugin234, и как их считать тогда, как один товар? или как два?.. и по-хорошему нужно ещё количество единиц каждого товара выводить.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
22.02.2019, 20:43
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
а какой признак последнего товара?
в этих делах признак может быть только один - рассчитать или продолжить добавлять

еще бывает - удалить - введите номер позиции
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
22.02.2019, 20:44
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

yugin234, в общем, вот на скорую написал программу, которая всё красиво выводит. Хотите - улучшайте. Думаю, под себя сможете подогнать сами?

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
i = 1
d = {}
def add_item(itemName, itemCost):
  global d
  if itemName in d:
    d[itemName][0] += 1
  else:
    d[itemName] = [1, itemCost]
  return d
 
def print_receipt():
  global i
  total = 0
  print('чек:', i, '; видов товара:', len(d), 'всего товаров:', end=' ')
  c = 0
  for j in d.values():
    c += j[0]
  print(c)
  for k, v in d.items():
 
    print(k + ' x' + str(v[0]), ':', v[0]*v[1])
    total += v[0]*v[1]
  print('итоговая стоимость:', total)
  print('-----')
  i+=1
 
 
itemdict = {}
 
while True:
  itemName = input('Выберите товар')
  if itemName in itemdict:
    print('Добавлена ещё одна единица товара', itemName)
    add_item(itemName, itemdict[itemName])
    continue
  if itemName == '':
    print()
    print_receipt()
    d = {}
    itemdict = {}
    total = 0
    continue
  if itemName == '#':
    break
  itemCost = float(input('Цена'))
  itemdict[itemName] = itemCost
  add_item(itemName, itemCost)
Данные
Кликните здесь для просмотра всего текста

Выберите товар бананы
Цена 30
Выберите товар молоко
Цена 20
Выберите товар апельсин
Цена 15
Выберите товар бананы
Добавлена ещё одна единица товара бананы
Выберите товар молоко
Добавлена ещё одна единица товара молоко
Выберите товар

чек: 1 ; видов товара: 3 всего товаров: 5
бананы x2 : 60.0
молоко x2 : 40.0
апельсин x1 : 15.0
итоговая стоимость: 115.0
-----
Выберите товар гречка
Цена 14
Выберите товар рис
Цена 10
Выберите товар гречка
Добавлена ещё одна единица товара гречка
Выберите товар мясо
Цена 90
Выберите товар

чек: 2 ; видов товара: 3 всего товаров: 4
гречка x2 : 28.0
рис x1 : 10.0
мясо x1 : 90.0
итоговая стоимость: 128.0
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
22.02.2019, 22:15
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
а какой признак последнего товара?
m0nte-cr1st0,

так а смысл?
разве это научит?
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
23.02.2019, 02:37
IRIP, не научит, увы, пока человек сам не начнёт пробовать..
эх... вспоминаю себя. проходил курсы на степике. был таким же. даже с первого курса гуглил задания. интересно будет через годик его же пройти
0
11 / 10 / 1
Регистрация: 02.03.2019
Сообщений: 16
04.04.2019, 21:46
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def add_item(itemName, itemCost):
    global count, b
    items.append(itemName + ' - ' + str(itemCost))
    count += itemCost
    b = True
 
 
def print_receipt():
    global count, numeration, items
    global b
    if b:
        if len(items) > 0:
            print('Чек {}. Всего предметов: {}'.format(numeration, len(items)))
        for element in items:
            print(element)
        print('Итого:', count)
        print('-----')
        count = 0
        numeration += 1
        items.clear()
    b = False
Работает
0
2 / 2 / 0
Регистрация: 25.10.2019
Сообщений: 3
02.04.2020, 14:47
names = []


def hello(name):
if None in query:
names.append(name)
number_in_queue = names.index(name)
query[number_in_queue] = name
print(f"Здравствуйте, {name}! Подойдите к окошку номер", number_in_queue + 1)
else:
print(f"Простите, {name}, все окна заняты.")


def search_card(name):
if None in query:
if name in base:
number_of_card = str((int(base.index(name))) + 1)
print('Ваша карта с номером ' + number_of_card + ' найдена')
else:
print('Ваша карта не найдена')
else:
print(f"Простите, {name}, дождитесь своей очереди")


def good_bye(name):
if name in names:
print(f"До свидания, не болейте, {name}")
else:
print(f"Простите, {name}, дождитесь своей очереди")
0
2 / 2 / 0
Регистрация: 05.05.2020
Сообщений: 31
09.05.2020, 16:10
глохнет если ввести только print_receipt()
0
 Аватар для Laimusp
12 / 12 / 1
Регистрация: 10.02.2021
Сообщений: 14
17.01.2022, 17:29
Вот этот код только что прошёл проверку, все робит


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
products = {}
numeration = 1
index_count = 0
 
 
def add_item(item_name, item_cost):
    global index_count
    products[index_count] = {item_name: item_cost}
    index_count += 1
 
 
def print_receipt():
    global numeration, products
    final_cost = 0
    if products:
        print(f"Чек {numeration}. Всего предметов: {len(products)}")
        for item in products.values():
            name, cost = list(item.items())[0]
            print(f"{name} - {cost}")
            final_cost += cost
        print(f"Итого: {final_cost}\n-----")
        numeration += 1
        products = {}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2022, 17:29
Помогаю со студенческими работами здесь

Задача 5: Длинный плакат
Юный художник Вася нарисовал плакат с очень большим числом и решил повесить его на самую длинную стену школы. К сожалению, даже самая...

Длинный чек
Пожалуйста, если не сложно, в формате PEP8 Для работы небольшого магазинчика вас попросили сделать небольшой набор функций,...

Длинный чек
Здравствуйте, нужно написать программу по задаче: Для работы небольшого магазинчика вас попросили сделать небольшой набор функций,...

Чек
Помогите пожалуйста. Задание такое Нужно сделать новую функцию, которая возвращает одну или несколько строчек: Первая строка — левая...

Чек
Есть код, работает на всех компиляторах, которые я знаю, но 'компилятор - учитель' не пропускает. В чем проблема? Вот код: from...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
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 и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru