basicsPython/less-02/task-06.py
2022-02-21 22:24:16 +03:00

72 lines
3.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Реализовать структуру данных «Товары». Она должна представлять собой список кортежей.
# Каждый кортеж хранит информацию об отдельном товаре.
# В кортеже должно быть два элемента — номер товара и словарь с параметрами,
# то есть характеристиками товара: название, цена, количество, единица измерения.
# Структуру нужно сформировать программно, запросив все данные у пользователя.
def my_str2int(str): # верним число если это возможно
try:
n_int=int(str)
except ValueError:
return str
else:
return n_int
def my_print_list(struct):
print('[')
for el in struct:
print(el)
print(']')
def my_print_dict(dict):
print('{')
for key in dict.keys():
print(f"'{key}': {dict[key]},")
print('}')
temp_struct = [
(1, {'название': 'компьютер', 'цена': 20000, 'количество': 5, '': 'шт.'}),
(2, {'название': 'принтер', 'цена': 6000, 'количество': 2, '': 'шт.'}),
(3, {'название': 'сканер', 'цена': 2000, 'количество': 7, '': 'шт.'})
]
my_struct = []
my_dict={}
if False : # Постывить True для отладки на temp_struct
my_struct = temp_struct.copy()
my_dict = {'название': [], 'цена': [], 'количество': [], '': []}
else: # запросим у пользователя список полей (ключей) словаря
i=1
next = True
str = input('Введите характеристиками товара через запятую:(def: название,цена,количество,единица измерения): \n')\
or 'название,цена,количество,единица измерения'
name_list = str.split(',')
while next:
str_dict = {}
for itm in name_list:
str_dict.update({itm : my_str2int(input(f'{itm}: '))})
my_dict.update({itm : []})
my_struct.append( (i,str_dict,) )
next = False if input('Внести еще одну запись, (Y,n)' ).lower() == "n" else True
i += 1
# Нужно собрать аналитику о товарах. Реализовать словарь, в котором каждый ключ — характеристика товара,
# например, название. Тогда значение — список значений-характеристик, например, список названий товаров.
print('\nЗаполненая структура:')
#print(my_struct)
my_print_list(my_struct)
for el_struct in my_struct:
for key in el_struct[1].keys():
if el_struct[1].get(key) not in my_dict[key]: # проверим повторяющиеся или можно было еще организовать через set
my_dict[key].append(el_struct[1].get(key)) # но тут все равно перебор
print('\nАналитика:')
#print(my_dict)
my_print_dict(my_dict)