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