mirror of
https://github.com/denis-on/basicsPython.git
synced 2026-02-03 08:00:51 +03:00
end less02
This commit is contained in:
parent
69271cb2ea
commit
d7cbcbfb2c
26
less-02/task-01.py
Normal file
26
less-02/task-01.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Создать список и заполнить его элементами различных типов данных.
|
||||||
|
# Реализовать скрипт проверки типа данных каждого элемента. Использовать
|
||||||
|
# функцию type() для проверки типа. Элементы списка можно не запрашивать
|
||||||
|
# у пользователя, а указать явно, в программе
|
||||||
|
|
||||||
|
def print_type(el):
|
||||||
|
if (type(el) == list or type(el) == tuple):
|
||||||
|
print(el,' : ',type(el), end=' --> ')
|
||||||
|
for e in el:
|
||||||
|
print(e, end=' : ')
|
||||||
|
print(type(e), end=', ')
|
||||||
|
elif(type(el) == dict):
|
||||||
|
print(el, ' : ', type(el), end=' --> ')
|
||||||
|
for e in el.items():
|
||||||
|
print(e[0],' : ',e[1],end=', ')
|
||||||
|
else:
|
||||||
|
print(el, end=' : ')
|
||||||
|
print(type(el), end=', ')
|
||||||
|
|
||||||
|
|
||||||
|
my_list=[12, 3.14, 'python', False, [12,34,56], (1,2,3), {'a':1,'b':2}]
|
||||||
|
|
||||||
|
for el in my_list:
|
||||||
|
print_type(el)
|
||||||
|
print('')
|
||||||
|
|
||||||
14
less-02/task-02.py
Normal file
14
less-02/task-02.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# Для списка реализовать обмен значений соседних элементов.
|
||||||
|
# Значениями обмениваются элементы с индексами 0 и 1, 2 и 3 и т. д.
|
||||||
|
# При нечётном количестве элементов последний сохранить на своём месте.
|
||||||
|
# Для заполнения списка элементов нужно использовать функцию input().
|
||||||
|
|
||||||
|
str = input('Введите несколько значений (число или символ) через запятую: ')
|
||||||
|
#str='1,2,3,4,5,6,7,8,9'
|
||||||
|
new_list = str.split(',')
|
||||||
|
print(new_list)
|
||||||
|
|
||||||
|
for i in range(1,len(new_list),2):
|
||||||
|
new_list[i-1],new_list[i] = new_list[i],new_list[i-1]
|
||||||
|
|
||||||
|
print(new_list)
|
||||||
30
less-02/task-03.py
Normal file
30
less-02/task-03.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Пользователь вводит месяц в виде целого числа от 1 до 12.
|
||||||
|
# Сообщить, к какому времени года относится месяц (зима, весна, лето, осень).
|
||||||
|
# Напишите решения через list и dict
|
||||||
|
|
||||||
|
def int2month(n_month):
|
||||||
|
months = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь']
|
||||||
|
return months[n_month-1]
|
||||||
|
|
||||||
|
def inputIntNum(message):
|
||||||
|
n=-1
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
n = int(input(message + ' '))
|
||||||
|
except ValueError:
|
||||||
|
print('Это не число, попробуйте снова.')
|
||||||
|
else:
|
||||||
|
if n < 1 or n > 12:
|
||||||
|
print('Число должно быть от 1 до 12')
|
||||||
|
continue
|
||||||
|
break
|
||||||
|
return n
|
||||||
|
|
||||||
|
vg_list = ['зимы','зимы','весны','весны','весны','лета','лета','лета','осени','осени','осени','зими']
|
||||||
|
vg_dick = {1:'зимы', 2:'зимы', 3:'весны', 4:'весны', 5:'весны', 6:'лета',
|
||||||
|
7:'лета', 8:'лета', 9:'осени', 10:'осени', 11:'осени', 12:'зимы'}
|
||||||
|
|
||||||
|
month = inputIntNum('Введите номер месяца:')
|
||||||
|
|
||||||
|
print(f'dict: Месяц {int2month(month)} это месяц {vg_dick.get(month)}')
|
||||||
|
print(f'list: Месяц {int2month(month)} это месяц {vg_list[month-1]}')
|
||||||
10
less-02/task-04.py
Normal file
10
less-02/task-04.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Пользователь вводит строку из нескольких слов, разделённых пробелами.
|
||||||
|
# Вывести каждое слово с новой строки. Строки нужно пронумеровать.
|
||||||
|
# Если слово длинное, выводить только первые 10 букв в слове.
|
||||||
|
|
||||||
|
str = input('Введите строку (нескольких слов, разделённых пробелами): ')
|
||||||
|
#str='один два три четыре пять шесть семь иоченьдлинноеслово'
|
||||||
|
new_list = str.split() # не указываем тип разделителя - повторяющиеся пробелы будут как один
|
||||||
|
|
||||||
|
for i,word in enumerate(new_list):
|
||||||
|
print(i+1, word[:10])
|
||||||
39
less-02/task-05.py
Normal file
39
less-02/task-05.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Реализовать структуру «Рейтинг», представляющую собой набор натуральных чисел, который не возрастает.
|
||||||
|
# У пользователя нужно запрашивать новый элемент рейтинга.
|
||||||
|
# Если в рейтинге существуют элементы с одинаковыми значениями,
|
||||||
|
# то новый элемент с тем же значением должен разместиться после них.
|
||||||
|
|
||||||
|
def inputIntNum(message):
|
||||||
|
n=-1
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
n = int(input(message + ' '))
|
||||||
|
except ValueError:
|
||||||
|
print('Это не число, попробуйте снова.')
|
||||||
|
else:
|
||||||
|
if n < 0:
|
||||||
|
print('Введено отрицательное значение!')
|
||||||
|
continue
|
||||||
|
break
|
||||||
|
return n
|
||||||
|
|
||||||
|
|
||||||
|
my_list = [7, 5, 3, 3, 2]
|
||||||
|
print(my_list)
|
||||||
|
number = inputIntNum('Введите натуральное число или "0" для выхода:')
|
||||||
|
|
||||||
|
while number >0:
|
||||||
|
c=len(my_list)
|
||||||
|
if number not in my_list: # если нет элемента то найдем куда вставить
|
||||||
|
for i in range(c):
|
||||||
|
if number > my_list[i]:
|
||||||
|
my_list.insert(i,number)
|
||||||
|
break
|
||||||
|
if i == c-1:
|
||||||
|
my_list.append(number)
|
||||||
|
else:
|
||||||
|
indx = my_list.count(number)
|
||||||
|
my_list.insert(indx, number)
|
||||||
|
|
||||||
|
print(my_list)
|
||||||
|
number = inputIntNum('Введите натуральное число или "0" для выхода')
|
||||||
71
less-02/task-06.py
Normal file
71
less-02/task-06.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# Реализовать структуру данных «Товары». Она должна представлять собой список кортежей.
|
||||||
|
# Каждый кортеж хранит информацию об отдельном товаре.
|
||||||
|
# В кортеже должно быть два элемента — номер товара и словарь с параметрами,
|
||||||
|
# то есть характеристиками товара: название, цена, количество, единица измерения.
|
||||||
|
# Структуру нужно сформировать программно, запросив все данные у пользователя.
|
||||||
|
|
||||||
|
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, 'eд': 'шт.'}),
|
||||||
|
(2, {'название': 'принтер', 'цена': 6000, 'количество': 2, 'eд': 'шт.'}),
|
||||||
|
(3, {'название': 'сканер', 'цена': 2000, 'количество': 7, 'eд': 'шт.'})
|
||||||
|
]
|
||||||
|
|
||||||
|
my_struct = []
|
||||||
|
my_dict={}
|
||||||
|
|
||||||
|
if False : # Постывить True для отладки на temp_struct
|
||||||
|
my_struct = temp_struct.copy()
|
||||||
|
my_dict = {'название': [], 'цена': [], 'количество': [], 'eд': []}
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user