GoloshchapovDY 4 недель назад
Родитель b0aef753ef 8e69428e2f
Сommit c525dec81c

@ -169,11 +169,10 @@ path.isdir - возвращает true, если папка является с
Функция разделения на кортеж из пути и из имени файла - split:
>>> head, tail = os.path.split(fil)
>>> head
'C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6'
>>> tail
'report.txt'
>>> os.path.split(os.path.abspath("report.txt"))
('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6, 'report.txt')
>>> type(os.path.split(os.path.abspath("report.txt")))
<class 'tuple'>
Функция проверки существования пути, заданного в символьной строке - exists:

@ -22,22 +22,9 @@
# Решение
>>> import random
>>> num = list(range(1, 126, 1))
>>> num
[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, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125]
>>> kor = ()
>>> for i in num:
... kor = kor + (random.randint(6, 56),)
...
...
>>> kor
(16, 27, 46, 6, 47, 29, 22, 23, 12, 53, 13, 20, 43, 56, 43, 15, 29, 11, 52, 41, 53, 27, 7, 7, 17, 55, 35, 43, 53, 11, 14, 46, 14, 11, 52, 53, 47, 28, 17, 37, 27, 56, 37, 35, 23, 7, 44, 19, 18, 38, 27, 19, 40, 7, 11, 6, 27, 18, 36, 40, 54, 28, 30, 33, 50, 54, 19, 25, 8, 10, 50, 37, 8, 18, 7, 25, 46, 30, 45, 32, 36, 41, 19, 39, 41, 42, 39, 30, 30, 54, 51, 10, 35, 31, 27, 43, 44, 32, 13, 43, 35, 50, 43, 9, 21, 7, 43, 44, 14, 50, 29, 55, 36, 38, 18, 44, 27, 18, 49, 45, 39, 53, 56, 30, 22)
>>> len(kor)
125
>>> str_kor = tuple(map(str, kor))
>>> str_kor
('16', '27', '46', '6', '47', '29', '22', '23', '12', '53', '13', '20', '43', '56', '43', '15', '29', '11', '52', '41', '53', '27', '7', '7', '17', '55', '35', '43', '53', '11', '14', '46', '14', '11', '52', '53', '47', '28', '17', '37', '27', '56', '37', '35', '23', '7', '44', '19', '18', '38', '27', '19', '40', '7', '11', '6', '27', '18', '36', '40', '54', '28', '30', '33', '50', '54', '19', '25', '8', '10', '50', '37', '8', '18', '7', '25', '46', '30', '45', '32', '36', '41', '19', '39', '41', '42', '39', '30', '30', '54', '51', '10', '35', '31', '27', '43', '44', '32', '13', '43', '35', '50', '43', '9', '21', '7', '43', '44', '14', '50', '29', '55', '36', '38', '18', '44', '27', '18', '49', '45', '39', '53', '56', '30', '22')
>>> tpl= tuple(str(random.randint(6, 56)) for x in range(125))
>>> tpl
('51', '16', '55', '38', '10', '26', '47', '26', '50', '31', '55', '39', '40', '54', '41', '14', '42', '19', '33', '28', '22', '38', '19', '34', '8', '50', '19', '24', '8', '18', '23', '19', '54', '32', '6', '6', '9', '22', '36', '54', '15', '35', '48', '45', '10', '30', '43', '21', '42', '11', '53', '10', '39', '12', '10', '36', '27', '24', '53', '14', '16', '54', '18', '15', '42', '49', '53', '25', '11', '21', '12', '41', '43', '36', '38', '54', '50', '14', '24', '33', '9', '37', '6', '15', '39', '48', '48', '24', '43', '54', '19', '32', '48', '14', '23', '35', '29', '20', '26', '38', '30', '43', '15', '54', '21', '21', '12', '22', '46', '23', '42', '47', '31', '40', '40', '28', '31', '29', '7', '16', '27', '9', '32', '30', '45')
>>> L_fam = ["Goloshchapov", "Filipov", "Ivanov", "Tabolin", "Lazarev"]
@ -46,7 +33,7 @@
>>> os.chdir('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6')
>>> f = open('bin.mnz', 'wb')
>>> import pickle
>>> pickle.dump(str_kor, f)
>>> pickle.dump(tpl, f)
>>> pickle.dump(L_fam, f)
>>> f.close()
@ -55,12 +42,12 @@
>>> obj1 = pickle.load(f)
>>> obj2_spis = pickle.load(f)
>>> obj1
('16', '27', '46', '6', '47', '29', '22', '23', '12', '53', '13', '20', '43', '56', '43', '15', '29', '11', '52', '41', '53', '27', '7', '7', '17', '55', '35', '43', '53', '11', '14', '46', '14', '11', '52', '53', '47', '28', '17', '37', '27', '56', '37', '35', '23', '7', '44', '19', '18', '38', '27', '19', '40', '7', '11', '6', '27', '18', '36', '40', '54', '28', '30', '33', '50', '54', '19', '25', '8', '10', '50', '37', '8', '18', '7', '25', '46', '30', '45', '32', '36', '41', '19', '39', '41', '42', '39', '30', '30', '54', '51', '10', '35', '31', '27', '43', '44', '32', '13', '43', '35', '50', '43', '9', '21', '7', '43', '44', '14', '50', '29', '55', '36', '38', '18', '44', '27', '18', '49', '45', '39', '53', '56', '30', '22')
('51', '16', '55', '38', '10', '26', '47', '26', '50', '31', '55', '39', '40', '54', '41', '14', '42', '19', '33', '28', '22', '38', '19', '34', '8', '50', '19', '24', '8', '18', '23', '19', '54', '32', '6', '6', '9', '22', '36', '54', '15', '35', '48', '45', '10', '30', '43', '21', '42', '11', '53', '10', '39', '12', '10', '36', '27', '24', '53', '14', '16', '54', '18', '15', '42', '49', '53', '25', '11', '21', '12', '41', '43', '36', '38', '54', '50', '14', '24', '33', '9', '37', '6', '15', '39', '48', '48', '24', '43', '54', '19', '32', '48', '14', '23', '35', '29', '20', '26', '38', '30', '43', '15', '54', '21', '21', '12', '22', '46', '23', '42', '47', '31', '40', '40', '28', '31', '29', '7', '16', '27', '9', '32', '30', '45')
>>> obj2_spis
['Goloshchapov', 'Filipov', 'Ivanov', 'Tabolin', 'Lazarev']
>>> if obj1 == str_kor:
>>> if obj1 == tpl:
... print("обьекты кортежа совпадают")
... else: print("обьекты кортежа не совпадают")
...
@ -71,18 +58,13 @@
обьекты списка совпадают
>>> List = []
>>> for i in range(0, 125, 5):
... List.append(list(str_kor[i:i + 5]))
... exec('list' + str(i//5+1) + ' = ' + str(list(obj1[i:i+5])))
...
...
>>> List
[['16', '27', '46', '6', '47'], ['29', '22', '23', '12', '53'], ['13', '20', '43', '56', '43'], ['15', '29', '11', '52', '41'], ['53', '27', '7', '7', '17'], ['55', '35', '43', '53', '11'], ['14', '46', '14', '11', '52'], ['53', '47', '28', '17', '37'], ['27', '56', '37', '35', '23'], ['7', '44', '19', '18', '38'], ['27', '19', '40', '7', '11'], ['6', '27', '18', '36', '40'], ['54', '28', '30', '33', '50'], ['54', '19', '25', '8', '10'], ['50', '37', '8', '18', '7'], ['25', '46', '30', '45', '32'], ['36', '41', '19', '39', '41'], ['42', '39', '30', '30', '54'], ['51', '10', '35', '31', '27'], ['43', '44', '32', '13', '43'], ['35', '50', '43', '9', '21'], ['7', '43', '44', '14', '50'], ['29', '55', '36', '38', '18'], ['44', '27', '18', '49', '45'], ['39', '53', '56', '30', '22']]
>>> for i in range(25):
... list_name = f"list{i + 1}" #Создается имя переменной (list1, list2,..)
... globals()[list_name] = List[i]
>>> list1
['16', '27', '46', '6', '47']
['51', '16', '55', '38', '10']
>>> list2
['29', '22', '23', '12', '53']
['26', '47', '26', '50', '31']

@ -0,0 +1,48 @@
# Выполнение модульного задания 2
Голощапов Д.Е.,А-01-23
# Задание
M2_7
1) С помощью текстового редактора создайте текстовый файл с некоторым именем, в котором будет 4 строки и на каждой строке будет по 3 числа, разделенных запятыми.
2) Запросите у пользователя и введите имя файла с данными для обработки. Обеспечьте вывод сообщения при вводе пустой строки и повторный ввод.
3) Введите данные из указанного файла и представьте их в виде списка.
4) Рассчитайте по введенным данным среднее значение синусов элементов списка.
5) Выведите рассчитанное значение на экран по шаблону: " По <число элементов в списке> элементам среднее синусов = <рассчитанное среднее>". При этом значение среднего должно быть округлено до двух знаков после точки.
# Решение
>>> import math
>>> import os
>>> os.chdir("C:\\Users\\u115-12\\Desktop\\python-labs\\TEMA6")
>>> fname = input("Введите имя файла: ")
Введите имя файла: module.txt
>>> while fname == "":
... print("Имя не должно быть пустым.")
... fname = input('Введите имя файла: ')
...
...
>>> with open(fname, 'r') as f:
... list = []
... for line in f:
... numbers = line.strip().split(',') #убрал пробелы и переносы в начале и конце строки, и разбил строку на части по запятым
... list.extend([float(x) for x in numbers]) #добавил числа в общий список
...
...
>>>
>>> list
[1.0, 4.0, 5.0, 2.0, 7.0, 8.0, 2.0, 6.0, 4.0, 8.0, 9.0, 10.0]
>>> sin_sum = sum(math.sin(x) for x in list)
>>> sin_sum
2.4119215412992787
>>> average=sin_sum/len(list)
>>> average
0.2009934617749399
>>> print("По", len(list), "элементам среднее синусов =", round(average, 2))
По 12 элементам среднее синусов = 0.2
Загрузка…
Отмена
Сохранить