Эксперт по сдаче вступительных испытаний в ВУЗах
Титульный лист
Лабораторная работа 1.
(Общее задание)
Постановка задачи
Получен массив строк source_data следующей структуры: id, Название, Цена оптовая, Цена розничная, Полное название, Модель, Код.
Разделителем полей является знак табуляции.
1. Напишите код функции get_price, которая будет выводить название и розничную цену картриджей заданного цвета color. Данные отсортируйте по возрастанию цены.При запуске программы будет вызвана основная функция main. Все остальные функции будут вызываться из нее. Цвет картриджа вводится с клавиатуры.
2. Создайте функцию, которая рассчитывает среднюю цену картриджа заданного цвета. Выведите содержимое словаря на экран в порядке возрастания средней цены.
3. Дополнительное задание. Усовершенствуйте программу на ваше усмотрение.
Приведен фрагмент программного кода. Требуется завершить программу, следуя заданиям и указаниям в комментариях.
# -*- coding: utf-8 -*-
source_data = [‘1067 HP 03A C3903A чер. для LJ5p/5mp/6p/6mp 3 828,07 3 403,75 Картридж Hewlett-Packard для LJ 5P/5mp/6p/6mp C3903A 2054’,
‘11429 HP 92A C4092A желт.для LJ1100/1100A/3200 2 534,07 2 253,18 Картридж Hewlett-Packard для LJ 1100 C4092A 2069’,
‘12151 HP 96A C4096A чер.для LJ 2100/2200 4 369,27 3 884,96 Картридж Hewlett-Packard для LJ 2100 C4096A 2070’,
‘12355 HP 29X C4129X чер. пов. емк. для LJ5000 6 902,21 6 137,14 Картридж Hewlett-Packard для LJ 5000 C4129X 2073’,
‘12356 HP 82X C4182X голуб. пов. емк. для LJ 8100 8 090,74 7 193,93 Картридж Hewlett-Packard для LJ 8100/HP Mopier 320 C4182X 2083’,
‘24874 Canon EP-22 чер.для LBP-1120/800/810 2 124,07 2 124,07 Картридж CANON EP-22 (HP C4092A) EP-22 2426’,
‘29694 HP 15A C7115A чер.для LJ 1000/1200/1220 2 636,89 2 344,60 Картридж Hewlett-Packard LJ 1200 C7115A 2211’,
‘31416 Toshiba T-1550E чер. 4 лепесткадля 1550/1560 613,56 545,55 Тонер Toshiba 1550/1560 4\’EU vers.(туб. 240г.) (о) T-1550E 4\’EURO T-1550E 4 EURO 3851’,
‘43701 HP 43X C8543X чер. пов. емк. для LJ9000 11 104,70 9 873,80 Картридж Hewlett-Packard LJ 9000 C8543X 2225’,
‘45275 Xerox 109R00639 чер.для Ph3110/3210 5 556,05 4 940,19 Тонер-картридж XEROX PHASER 3110/3210 (o) 109R00639 0624’]
def get_price(color):
# напишите здесь ваш код функции, которая выводит названия и цены
def main():
initial_color=input()
get_price(initial_color)
if __name__ == «__main__»:
main()
Доработкой данного задания будет являться выбор цвета картриджа. Пользователю будет предоставлен список цветов, из которого будет выбран нужный цвет.
Полный код программы представлен ниже:
import re
source_data = [‘1067 HP 03A C3903A чер. для LJ5p/5mp/6p/6mp 3 828,07 3 403,75 Картридж Hewlett-Packard для LJ 5P/5mp/6p/6mp C3903A 2054’,
‘11429 HP 92A C4092A желт. для LJ1100/1100A/3200 2 534,07 2 253,18 Картридж Hewlett-Packard для LJ 1100 C4092A 2069’,
‘12151 HP 96A C4096A чер. для LJ 2100/2200 4 369,27 3 884,96 Картридж Hewlett-Packard для LJ 2100 C4096A 2070’,
‘12355 HP 29X C4129X чер. пов. емк. для LJ5000 6 902,21 6 137,14 Картридж Hewlett-Packard для LJ 5000 C4129X 2073’,
‘12356 HP 82X C4182X голуб. пов. емк. для LJ 8100 8 090,74 7 193,93 Картридж Hewlett-Packard для LJ 8100/HP Mopier 320 C4182X 2083’,
‘24874 Canon EP-22 чер. для LBP-1120/800/810 2 124,07 2 124,07 Картридж CANON EP-22 (HP C4092A) EP-22 2426’,
‘29694 HP 15A C7115A чер. для LJ 1000/1200/1220 2 636,89 2 344,60 Картридж Hewlett-Packard LJ 1200 C7115A 2211’,
‘31416 Toshiba T-1550E чер. 4 лепестка для 1550/1560 613,56 545,55 Тонер Toshiba 1550/1560 4\’EU vers.(туб. 240г.) (о) T-1550E 4\’EURO T-1550E 4 EURO 3851’,
‘43701 HP 43X C8543X чер. пов. емк. для LJ9000 11 104,70 9 873,80 Картридж Hewlett-Packard LJ 9000 C8543X 2225’,
‘45275 Xerox 109R00639 чер. для Ph3110/3210 5 556,05 4 940,19 Тонер-картридж XEROX PHASER 3110/3210 (o) 109R00639 0624’]
#данные в виде матрицы
source_list = list()
# список доступных цветов
colors_list = list()
#данные, сгруппированные по цвету
group_by_color_dict = dict()
def parse_source_data():
for data_row in source_data:
# разбиение на строки и наполнение source_list данными
list_item = data_row.split(‘\t’)
list_item[2] = float(list_item[2].replace(‘ ‘, »).replace(‘,’,’.’))
list_item[3] = float(list_item[3].replace(‘ ‘, »).replace(‘,’,’.’))
source_list.append(list_item)
for row in source_list:
# получение набора доступных цветов
color = re.search(r’\b\w+\.’, row[1])[0]
if color not in colors_list:
colors_list.append(color)
# группировка данных по цвету
if color not in group_by_color_dict:
group_by_color_dict[color] = list()
group_by_color_dict[color].append(row)
def get_price(color):
return sorted(group_by_color_dict[color], key=lambda x: x[3])
def get_average_price_for_all_colors():
avg_price_dictionary = dict()
for key in group_by_color_dict:
total_price = sum(row[3] for row in group_by_color_dict[key])
avg_price = total_price / len(group_by_color_dict[key])
avg_price_dictionary[key] = avg_price
return avg_price_dictionary
def main():
parse_source_data()
for i, m in enumerate(colors_list, 1):
print(f'[{i}] — {m}’)
color_id = int(input(‘Введите номер цвета картриджа: ‘))
initial_color = colors_list[color_id-1]
print(f’\n — Список картриджей выбранного цвета: {initial_color} —\n’)
for row in get_price(initial_color):
print(f'{row[1]:<50} | {row[3]:.2f}’)
print(f’\n — Список усредненных цен на картриджи: {initial_color} —\n’)
for key, value in get_average_price_for_all_colors().items():
print(f'{key:<7}| {value:.2f}’)
if __name__ == «__main__»:
main()
Тестирование программы:
При запуске программы, исходя из данных source_data, пользователю выдается сообщение о необходимости выбрать цвет. Выбор цвета происходит вводом соответствующего номера:
Если выбран черный цвет:
Рис. 1.
Если выбран желтый цвет:
Рис. 2.
Если выбран голубой цвет:
Рис. 3.
Далее выводится список усредненных цен на картриджи:
Рис. 4.
Т.к. исходя из данных source_data количество желтых и голубых картриджей равно 1, то остается проверить правильность подсчета средней розничной цены у черных картриджей:
(545.55+2124.07+2344.60+3403.75+3884.96+4940.19+6137.14+9873.80)/8 = 4156.76
Индивидуальное задание. I вариант
Получен массив строк следующей структуры: id, Название, Цена оптовая, Цена розничная, Полное название, Модель, Код.
Разделителем полей является знак табуляции.
1. Напишите код функции get_flash_price, которая будет выводить название и розничную цену флеш-накопителей заданного размера size_of_flash. Данные отсортируйте по возрастанию цены.
При запуске программы будет вызвана основная функция main. Все остальные функции будут вызываться из нее. Размер флешки вводится с клавиатуры. Московский технологический институт Объектно-ориентированный подход в программировании Лабораторный практикум
2. Создайте функцию, которая рассчитывает среднюю цену флешки заданного объема. Выведите на экран все объемы флешек и средние цены в порядке возрастания средней цены, используя созданную функцию.
3. Дополнительное задание. Усовершенствуйте программу на ваше усмотрение.
Ход работы:
3 пункт индивидуального задания: дополнить программу выводом всех флеш-накопителей, сгруппированных по размеру
Ниже представлен код программы:
import re
source_data = [‘103504 Netac U351 16 Гб. [NT03U351N-016G-30BK] 220 250 Память USB Flash 16 ГБ Netac U351 NT03U351N 30BK’,
‘103505 Mirex Elf 16 Гб.[13600-FMURDE08] 260,50 300,99 Память USB Flash 16 ГБ Mirex Elf FMURDE08 13600’,
‘103746 Goodram UTS2 16 Гб.[UTS2-0160K0R11] 300.78 340,87 Память USB Flash 16 ГБ Goodram UTS2 0160K0R11 UTS20160K0R11’,
‘104593 Samsung BAR Plus 64 Гб.[MUF-64BE3/APC] 1500 1600.34 Память USB Flash 64 ГБ Samsung BAR Plus 64BE3/APC MUF64BE3’,
‘104762 Samsung BAR Plus 128 Гб.[MUF-128BE3/APC] 2300,99 2499,99 Память USB Flash 128 ГБ Samsung BAR Plus 128BE3/APC MUF128BE3’,
‘105473 Goodram UTS2 32 Гб.[UTS2-0320K0R11] 340 380 Память USB Flash 32 ГБ Goodram UTS2 0320K0R11 UTS20320K0R11’,
‘104725 Samsung BAR Plus 256 Гб.[MUF-256BE3/APC] 4300,87 4399.54 Память USB Flash 256 ГБ Samsung BAR Plus 256BE3/APC MUF256BE3’,
‘104972 Kingston DataTraveler 100 G3 64 Гб.[DT100G3/64GB] 800 850 Память USB Flash 64 ГБ Kingston DataTraveler 100 G3 DT100G3 64100G3’,
‘104653 Transcend JetFlash 700 128 Гб.[TS128GJF700] 1400.45 1499 Память USB Flash 128 ГБ Transcend JetFlash 700 TS128GJF700 28GJF’,
‘105736 Sandisk Ultra Flair 32 Гб.[SDCZ73-032G-G46] 600 699 Память USB Flash 32 ГБ Sandisk Ultra Flair SDCZ73 032GG46’,
‘185635 Silicon Power B02 128 Гб.[SP128GBUF3B02V1K] 1300.99 1399,99 Память USB Flash 128 ГБ Silicon Power B02 SP128GB F3B02V1K’,
‘187323 Sandisk Cruzer Fit 16 Гб.[SDCZ33-016G-G35] 400.99 450,54 Память USB Flash 16 ГБ Sandisk Cruzer Fit SDCZ33 016GG35’
]
#данные в виде матрицы
source_list = list()
# список доступных доступных объемов накопителей
sizes_list = list()
#данные, сгруппированные по цвету
group_by_size_dict = dict()
def parse_source_data():
for data_row in source_data:
# разбиение на строки и наполнение source_list данными
list_item = data_row.split(‘\t’)
list_item[2] = float(list_item[2].replace(‘ ‘, »).replace(‘,’,’.’))
list_item[3] = float(list_item[3].replace(‘ ‘, »).replace(‘,’,’.’))
source_list.append(list_item)
for row in source_list:
# получение набора доступных объемов накопителей
match = re.search(r'(\b\d+)\s*[Гг][Бб]’, row[1])
size = int(match[1])
if size not in sizes_list:
sizes_list.append(size)
# группировка данных по размеру накопителей
if size not in group_by_size_dict:
group_by_size_dict[size] = list()
group_by_size_dict[size].append(row)
sizes_list.sort()
def get_price(color):
return sorted(group_by_size_dict[color], key=lambda x: x[3])
def get_average_price_for_all_sizes():
avg_price_dictionary = dict()
for key in group_by_size_dict:
total_price = sum(row[3] for row in group_by_size_dict[key])
avg_price = total_price / len(group_by_size_dict[key])
avg_price_dictionary[key] = avg_price
return avg_price_dictionary
def main():
parse_source_data()
for i, m in enumerate(sizes_list, 1):
print(f'[{i}] — {m}’)
last_id = len(sizes_list)+1
print(f'[{last_id}] — отобразить полный перечень флеш-накопителей:’)
id = int(input(‘Введите цифру, соответствующую объему накопителя: ‘))
if id == last_id:
for key, value in sorted(group_by_size_dict.items()):
print(f’\n— Флеш-накопители объемом {key} Гб.—‘)
for row in value:
print(f'{row[4]:<55} {row[3]:.2f}’)
else:
size_of = sizes_list[id-1]
print(f’\n — Список флеш-накопителей выбранного объема: {size_of} Гб. —\n’)
for row in get_price(size_of):
print(f'{row[1]:<50} | {row[3]:.2f}’)
print(f’\n— Список усредненных цен на флеш-накопители: —\n’)
for key, value in sorted(get_average_price_for_all_sizes().items()):
print(f'{key}Гб.\t| {value:.2f}’)
if __name__ == «__main__»:
main()
Тестирование программы:
При запуске программы, исходя из данных source_data, пользователю выдается сообщение о необходимости выбрать объем накопителя. Выбор объема накопителя происходит вводом соответствующего номера:
Если выбран накопитель объемом 16 Гб:
Рис. 5.
Если выбран накопитель объемом 32 Гб:
Рис. 6.
Если выбран накопитель объемом 64 Гб:
Рис. 7.
Если выбран накопитель объемом 128 Гб:
Рис. 8.
Если выбран накопитель объемом 256 Гб:
Рис. 9.
Отображение полного списка флеш-накопителей и их средней цены:
Рис. 10.
Необходимо проверить правильность подсчета усредненных цен:
Для накопителей на 16 Гб. средняя розничная цена равна:
(250+300.99+340.87+450.54)/4=335.60
Для накопителей на 32 Гб. средняя розничная цена равна:
(380+699)/2=539.50
Для накопителей на 64 Гб. средняя розничная цена равна:
(1600.34+850)/2=1225.17
Для накопителей на 128 Гб. средняя розничная цена равна:
(2499.99+1499+1399.99)/3=1799.66
Для накопителей на 256 Гб. недостаточно данных, чтобы определить среднюю цену, т.к. с данным объемом представлен один товар
Тестирование выполнено, программа работает корректно. Задачи лабораторной работы выполнены.
Оставить комментарий
Inna Petrova 18 минут назад
Нужно пройти преддипломную практику у нескольких предметов написать введение и отчет по практике так де сдать 4 экзамена после практики
Иван, помощь с обучением 25 минут назад
Inna Petrova, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Коля 2 часа назад
Здравствуйте, сколько будет стоить данная работа и как заказать?
Иван, помощь с обучением 2 часа назад
Николай, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инкогнито 5 часов назад
Сделать презентацию и защитную речь к дипломной работе по теме: Источники права социального обеспечения. Сам диплом готов, пришлю его Вам по запросу!
Иван, помощь с обучением 6 часов назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Василий 12 часов назад
Здравствуйте. ищу экзаменационные билеты с ответами для прохождения вступительного теста по теме Общая социальная психология на магистратуру в Московский институт психоанализа.
Иван, помощь с обучением 12 часов назад
Василий, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Анна Михайловна 1 день назад
Нужно закрыть предмет «Микроэкономика» за сколько времени и за какую цену сделаете?
Иван, помощь с обучением 1 день назад
Анна Михайловна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Сергей 1 день назад
Здравствуйте. Нужен отчёт о прохождении практики, специальность Государственное и муниципальное управление. Планирую пройти практику в школе там, где работаю.
Иван, помощь с обучением 1 день назад
Сергей, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инна 1 день назад
Добрый день! Учусь на 2 курсе по специальности земельно-имущественные отношения. Нужен отчет по учебной практике. Подскажите, пожалуйста, стоимость и сроки выполнения?
Иван, помощь с обучением 1 день назад
Инна, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Студент 2 дня назад
Здравствуйте, у меня сегодня начинается сессия, нужно будет ответить на вопросы по русскому и математике за определенное время онлайн. Сможете помочь? И сколько это будет стоить? Колледж КЭСИ, первый курс.
Иван, помощь с обучением 2 дня назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Ольга 2 дня назад
Требуется сделать практические задания по математике 40.02.01 Право и организация социального обеспечения семестр 2
Иван, помощь с обучением 2 дня назад
Ольга, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Вика 3 дня назад
сдача сессии по следующим предметам: Этика деловых отношений - Калашников В.Г. Управление соц. развитием организации- Пересада А. В. Документационное обеспечение управления - Рафикова В.М. Управление производительностью труда- Фаизова Э. Ф. Кадровый аудит- Рафикова В. М. Персональный брендинг - Фаизова Э. Ф. Эргономика труда- Калашников В. Г.
Иван, помощь с обучением 3 дня назад
Вика, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Игорь Валерьевич 3 дня назад
здравствуйте. помогите пройти итоговый тест по теме Обновление содержания образования: изменения организации и осуществления образовательной деятельности в соответствии с ФГОС НОО
Иван, помощь с обучением 3 дня назад
Игорь Валерьевич, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Вадим 4 дня назад
Пройти 7 тестов в личном кабинете. Сооружения и эксплуатация газонефтипровод и хранилищ
Иван, помощь с обучением 4 дня назад
Вадим, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Кирилл 4 дня назад
Здравствуйте! Нашел у вас на сайте задачу, какая мне необходима, можно узнать стоимость?
Иван, помощь с обучением 4 дня назад
Кирилл, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Oleg 4 дня назад
Требуется пройти задания первый семестр Специальность: 10.02.01 Организация и технология защиты информации. Химия сдана, история тоже. Сколько это будет стоить в комплексе и попредметно и сколько на это понадобится времени?
Иван, помощь с обучением 4 дня назад
Oleg, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Валерия 5 дней назад
ЗДРАВСТВУЙТЕ. СКАЖИТЕ МОЖЕТЕ ЛИ ВЫ ПОМОЧЬ С ВЫПОЛНЕНИЕМ практики и ВКР по банку ВТБ. ответьте пожалуйста если можно побыстрее , а то просто уже вся на нервяке из-за этой учебы. и сколько это будет стоить?
Иван, помощь с обучением 5 дней назад
Валерия, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Инкогнито 5 дней назад
Здравствуйте. Нужны ответы на вопросы для экзамена. Направление - Пожарная безопасность.
Иван, помощь с обучением 5 дней назад
Здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Иван неделю назад
Защита дипломной дистанционно, "Синергия", Направленность (профиль) Информационные системы и технологии, Бакалавр, тема: «Автоматизация приема и анализа заявок технической поддержки
Иван, помощь с обучением неделю назад
Иван, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru
Дарья неделю назад
Необходимо написать дипломную работу на тему: «Разработка проекта внедрения CRM-системы. + презентацию (слайды) для предзащиты ВКР. Презентация должна быть в формате PDF или формате файлов PowerPoint! Институт ТГУ Росдистант. Предыдущий исполнитель написал ВКР, но работа не прошла по антиплагиату. Предыдущий исполнитель пропал и не отвечает. Есть его работа, которую нужно исправить, либо переписать с нуля.
Иван, помощь с обучением неделю назад
Дарья, здравствуйте! Мы можем Вам помочь. Прошу Вас прислать всю необходимую информацию на почту и написать что необходимо выполнить. Я посмотрю описание к заданиям и напишу Вам стоимость и срок выполнения. Информацию нужно прислать на почту info@the-distance.ru