diff --git a/TEMA5/32232.py b/TEMA5/32232.py new file mode 100644 index 0000000..6f7219b --- /dev/null +++ b/TEMA5/32232.py @@ -0,0 +1,13 @@ +a = 1 +b= 0 + +while a<5: + if a % 2 != 0 and a<5: + b+= 1 + print(a) + if b == 3: + print("конец") + break + + a = a + 2 +else: print("fdgdgfdgdfgfdg") diff --git a/TEMA6/Modul.md b/TEMA6/Modul.md new file mode 100644 index 0000000..c0cdf58 --- /dev/null +++ b/TEMA6/Modul.md @@ -0,0 +1,41 @@ +# Вариант 29 Туровец Евгений Юрьевич +## Задание: +``` +1) Создайте словарь с 4 элементами. Ключи элементов: Институт, Кафедра, Группа, Студенты. Значения - списки из 3-4 элементов. Например, "Институт":[АВТИ, ИЭЭ, ИРЭ]. + +2) Запросите у пользователя и введите значение ключа словаря. Проверьте его наличие среди существующих значений ключей. При отсутствии - выдайте сообщение и повторите запрос. + +3) Отобразите на экране значения для указанного пользователем ключа по шаблону: "Ключ = <Указанное значение ключа> : Значения = <Список значений ключа>" + +4) Запишите словарь в бинарный файл с некоторым именем. + +5) Удалите словарь из памяти. +``` +Код реализации: +```py +import pickle +data = { + "Институт": ["ИВТИ", "ИЭЭ", "ИРЭ"], + "Кафедра": ["Информатика", "Математика", "Физика"], + "Группа": ["А-02-23", "ПИ-22", "ПИ-23"], + "Студенты": ["Туровец", "Петров", "Сидоров"] +} +while True: + key = input("Введите ключ (Институт, Кафедра, Группа, Студенты): ") + if key in data: + break + print("Такого ключа нет! Попробуйте еще раз.") +print(f"Ключ = {key} : Значения = {data[key]}") +with open("data.bin", "wb") as f: + pickle.dump(data, f) +del data +print("Словарь удален из памяти") +``` +Пример вывода: +``` +Введите ключ (Институт, Кафедра, Группа, Студенты): авыаыв +Такого ключа нет! Попробуйте еще раз. +Введите ключ (Институт, Кафедра, Группа, Студенты): Студенты +Ключ = Студенты : Значения = ['Туровец', 'Петров', 'Сидоров'] +Словарь удален из памяти +``` \ No newline at end of file diff --git a/TEMA6/Stroka.txt b/TEMA6/Stroka.txt new file mode 100644 index 0000000..48d3f7e --- /dev/null +++ b/TEMA6/Stroka.txt @@ -0,0 +1 @@ + diff --git a/TEMA6/bin.mnz b/TEMA6/bin.mnz new file mode 100644 index 0000000..8b7057e Binary files /dev/null and b/TEMA6/bin.mnz differ diff --git a/TEMA6/data.bin b/TEMA6/data.bin new file mode 100644 index 0000000..2653121 Binary files /dev/null and b/TEMA6/data.bin differ diff --git a/TEMA6/iz25.md b/TEMA6/iz25.md new file mode 100644 index 0000000..49e6474 --- /dev/null +++ b/TEMA6/iz25.md @@ -0,0 +1,98 @@ +## #Задание: + +# Создайте список с 10 элементами - комплексными числами, у которых вещественная и мнимая части - случайные целые числа в диапазоне значений [-10, 30]. + +# Запросите у пользователя имя текстового файла для вывода. + +# Запишите список в этот файл по одному числу на строке. + +# Удалите список из памяти + +# Прочитайте содержимое файла в новый список + +```py +import random + +# 1) Создание списка комплексных чисел +complex_list = [] +for i in range(10): + real_part = random.randint(-10, 30) + imag_part = random.randint(-10, 30) + complex_num = complex(real_part, imag_part) + complex_list.append(complex_num) + +print("Созданный список комплексных чисел:") +for i, num in enumerate(complex_list): + print(f"Элемент {i+1}: {num}") + +Элемент 1: (9-2j) +Элемент 2: (13+7j) +Элемент 3: (5+9j) +Элемент 4: (14-7j) +Элемент 5: (30-6j) +Элемент 6: (24+26j) +Элемент 7: (18+24j) +Элемент 8: (13+9j) +Элемент 9: (-7-3j) +Элемент 10: (-3+0j) + +# 2) Запрос имени файла +filename = input("Введите имя текстового файла для вывода: ") + +# 3) Запись списка в файл +with open(filename, 'w', encoding='utf-8') as file: + for complex_num in complex_list: + file.write(str(complex_num) + '\n') + +7 +8 +7 +8 +8 +9 +9 +8 +8 +8 +print(f"Список записан в файл: {filename}") +Список записан в файл: iz25.txt + +# 4) Удаление списка из памяти +del complex_list + +# Проверка удаления +try: + print(complex_list) +except NameError: + print("Список complex_list успешно удален из памяти") + +Список complex_list успешно удален из памяти + +# 5) Чтение содержимого файла в новый список +new_complex_list = [] +with open(filename, 'r', encoding='utf-8') as file: + for line in file: + line = line.strip() + # Преобразование строки обратно в комплексное число + complex_num = complex(line.replace('(','').replace(')','')) + new_complex_list.append(complex_num) + +print("\nПрочитанный из файла список комплексных чисел:") + +Прочитанный из файла список комплексных чисел: +for i, num in enumerate(new_complex_list): + print(f"Элемент {i+1}: {num}") + +Элемент 1: (9-2j) +Элемент 2: (13+7j) +Элемент 3: (5+9j) +Элемент 4: (14-7j) +Элемент 5: (30-6j) +Элемент 6: (24+26j) +Элемент 7: (18+24j) +Элемент 8: (13+9j) +Элемент 9: (-7-3j) +Элемент 10: (-3+0j) +print(f"Всего прочитано {len(new_complex_list)} элементов") +Всего прочитано 10 элементов +``` diff --git a/TEMA6/iz25.py b/TEMA6/iz25.py new file mode 100644 index 0000000..523aed1 --- /dev/null +++ b/TEMA6/iz25.py @@ -0,0 +1,111 @@ +Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32 +Enter "help" below or click "Help" above for more information. +import random +complex_list = [] +for i in range(10): + real_part = random.randint(-10, 30) + imag_part = random.randint(-10, 30) + complex_num = complex(real_part, imag_part) + complex_list.append(complex_num) + + +print("Созданный список комплексных чисел:") +Созданный список комплексных чисел: +for i, num in enumerate(complex_list): + print(f"Элемент {i+1}: {num}") + + +Элемент 1: (9-2j) +Элемент 2: (13+7j) +Элемент 3: (5+9j) +Элемент 4: (14-7j) +Элемент 5: (30-6j) +Элемент 6: (24+26j) +Элемент 7: (18+24j) +Элемент 8: (13+9j) +Элемент 9: (-7-3j) +Элемент 10: (-3+0j) +filename = input("Введите имя текстового файла для вывода: ") +Введите имя текстового файла для вывода: iz25.txt +with open(filename, 'w', encoding='utf-8') as file: + for complex_num in complex_list: + file.write(str(complex_num) + '\n') + + +7 +8 +7 +8 +8 +9 +9 +8 +8 +8 +print(f"Список записан в файл: {filename}") +Список записан в файл: iz25.txt +del complex_list +try: + print(complex_list) +except NameError: + print("Список complex_list успешно удален из памяти") + + +Список complex_list успешно удален из памяти +new_complex_list = [] +with open(filename, 'r', encoding='utf-8') as file: +... for line in file: +... line = line.strip() +... # Преобразование строки обратно в комплексное число +... complex_num = complex(line.replace('(', '').replace(')', '').replace('j', '')) +... new_complex_list.append(complex_num) +... +... +Traceback (most recent call last): + File "", line 5, in + complex_num = complex(line.replace('(', '').replace(')', '').replace('j', '')) +ValueError: complex() arg is a malformed string +>>> with open(filename, 'r', encoding='utf-8') as file: +... for line in file: +... line = line.strip() +... +... +>>> with open(filename, 'r', encoding='utf-8') as file: +... for line in file: +... line = line.strip() +... # Преобразование строки обратно в комплексное число +... complex_num = complex(line.replace('(', '').replace(')', '').replace('j', '')) +... new_complex_list.append(complex_num) +... +... +Traceback (most recent call last): + File "", line 5, in + complex_num = complex(line.replace('(', '').replace(')', '').replace('j', '')) +ValueError: complex() arg is a malformed string +>>> with open(filename, 'r', encoding='utf-8') as file: +... for line in file: +... line = line.strip() +... # Преобразование строки обратно в комплексное число +... complex_num = complex(line.replace('(','').replace(')','')) +... new_complex_list.append(complex_num) +... +... +>>> print("\nПрочитанный из файла список комплексных чисел:") + +Прочитанный из файла список комплексных чисел: +>>> for i, num in enumerate(new_complex_list): +... print(f"Элемент {i+1}: {num}") +... +... +Элемент 1: (9-2j) +Элемент 2: (13+7j) +Элемент 3: (5+9j) +Элемент 4: (14-7j) +Элемент 5: (30-6j) +Элемент 6: (24+26j) +Элемент 7: (18+24j) +Элемент 8: (13+9j) +Элемент 9: (-7-3j) +Элемент 10: (-3+0j) +>>> print(f"Всего прочитано {len(new_complex_list)} элементов") +Всего прочитано 10 элементов diff --git a/TEMA6/iz25.txt b/TEMA6/iz25.txt new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/modul.py b/TEMA6/modul.py new file mode 100644 index 0000000..f67a965 --- /dev/null +++ b/TEMA6/modul.py @@ -0,0 +1,17 @@ +import pickle +data = { + "Институт": ["ИВТИ", "ИЭЭ", "ИРЭ"], + "Кафедра": ["Информатика", "Математика", "Физика"], + "Группа": ["А-02-23", "ПИ-22", "ПИ-23"], + "Студенты": ["Туровец", "Петров", "Сидоров"] +} +while True: + key = input("Введите ключ (Институт, Кафедра, Группа, Студенты): ") + if key in data: + break + print("Такого ключа нет! Попробуйте еще раз.") +print(f"Ключ = {key} : Значения = {data[key]}") +with open("data.bin", "wb") as f: + pickle.dump(data, f) +del data +print("Словарь удален из памяти") diff --git a/TEMA6/obshee.md b/TEMA6/obshee.md new file mode 100644 index 0000000..4ebf262 --- /dev/null +++ b/TEMA6/obshee.md @@ -0,0 +1,73 @@ +# Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк. +```py +import random +import pickle +import os + +# Создаем кортеж +num = list(range(1, 126, 1)) +kor = () +for i in num: + kor = kor + (random.randint(6, 56),) +print('Кортеж = ', kor, '\n') +print('Длина кортежа = ', len(kor)) +str_kor = tuple(map(str, kor)) + +fam = ["Туровец", "Снегура", "Ефремов", "Хатюхин", "Шабатов"] + +# Исправленный путь - используем сырую строку или двойные слеши +os.chdir(r'C:\Users\Evgeny\Desktop\python-labs\TEMA6') + +# Запись в файл +f = open('bin.mnz', 'wb') +pickle.dump(str_kor, f) +pickle.dump(fam, f) +f.close() + +# Чтение из файла +f = open('bin.mnz', 'rb') +obj1 = pickle.load(f) +obj2_spis = pickle.load(f) +print('Первый считанный объект', obj1) +print('Второй считанный объект', obj2_spis) + +# Исправлены условия сравнения (добавлено двоеточие) +if obj1 == str_kor: + print('Первый объект совпадает с изначальным символьным кортежем\n') +else: + print('Первый объект НЕ совпадает с изначальным символьным кортежем\n') + +if obj2_spis == fam: + print('Второй объект совпадает с изначальным списком\n') +else: + print('Второй объект НЕ совпадает с изначальным списком\n') + +# Создание списка списков +List = [] +for i in range(0, 125, 5): + List.append(list(str_kor[i:i + 5])) +print('Список списков =', List) + +# Создание отдельных переменных для каждого списка +for i in range(25): + list_name = f"list{i + 1}" # Создается имя переменной (list1, list2,..) + globals()[list_name] = List[i] + +print('Список 1 = ', list1) +print('Список 2 =', list2) +``` +Вывод: +``` +Кортеж = (53, 54, 24, 35, 12, 9, 48, 11, 33, 26, 40, 41, 49, 45, 6, 31, 43, 11, 32, 50, 34, 14, 52, 11, 31, 39, 20, 54, 35, 47, 15, 17, 17, 29, 22, 47, 32, 54, 10, 6, 24, 23, 54, 29, 13, 16, 44, 53, 17, 41, 51, 21, 26, 12, 33, 11, 8, 37, 41, 16, 12, 44, 7, 54, 10, 45, 31, 9, 18, 13, 52, 31, 52, 41, 46, 24, 35, 44, 28, 31, 22, 52, 20, 30, 28, 8, 52, 56, 36, 15, 24, 45, 41, 35, 26, 37, 35, 54, 43, 18, 39, 9, 10, 48, 13, 31, 37, 35, 48, 14, 32, 27, 18, 30, 32, 50, 24, 34, 15, 46, 45, 54, 38, 12, 52) + +Длина кортежа = 125 +Первый считанный объект ('53', '54', '24', '35', '12', '9', '48', '11', '33', '26', '40', '41', '49', '45', '6', '31', '43', '11', '32', '50', '34', '14', '52', '11', '31', '39', '20', '54', '35', '47', '15', '17', '17', '29', '22', '47', '32', '54', '10', '6', '24', '23', '54', '29', '13', '16', '44', '53', '17', '41', '51', '21', '26', '12', '33', '11', '8', '37', '41', '16', '12', '44', '7', '54', '10', '45', '31', '9', '18', '13', '52', '31', '52', '41', '46', '24', '35', '44', '28', '31', '22', '52', '20', '30', '28', '8', '52', '56', '36', '15', '24', '45', '41', '35', '26', '37', '35', '54', '43', '18', '39', '9', '10', '48', '13', '31', '37', '35', '48', '14', '32', '27', '18', '30', '32', '50', '24', '34', '15', '46', '45', '54', '38', '12', '52') +Второй считанный объект ['Туровец', 'Снегура', 'Ефремов', 'Хатюхин', 'Шабатов'] +Первый объект совпадает с изначальным символьным кортежем + +Второй объект совпадает с изначальным списком + +Список списков = [['53', '54', '24', '35', '12'], ['9', '48', '11', '33', '26'], ['40', '41', '49', '45', '6'], ['31', '43', '11', '32', '50'], ['34', '14', '52', '11', '31'], ['39', '20', '54', '35', '47'], ['15', '17', '17', '29', '22'], ['47', '32', '54', '10', '6'], ['24', '23', '54', '29', '13'], ['16', '44', '53', '17', '41'], ['51', '21', '26', '12', '33'], ['11', '8', '37', '41', '16'], ['12', '44', '7', '54', '10'], ['45', '31', '9', '18', '13'], ['52', '31', '52', '41', '46'], ['24', '35', '44', '28', '31'], ['22', '52', '20', '30', '28'], ['8', '52', '56', '36', '15'], ['24', '45', '41', '35', '26'], ['37', '35', '54', '43', '18'], ['39', '9', '10', '48', '13'], ['31', '37', '35', '48', '14'], ['32', '27', '18', '30', '32'], ['50', '24', '34', '15', '46'], ['45', '54', '38', '12', '52']] +Список 1 = ['53', '54', '24', '35', '12'] +Список 2 = ['9', '48', '11', '33', '26'] +``` diff --git a/TEMA6/obshee.py b/TEMA6/obshee.py new file mode 100644 index 0000000..1910bee --- /dev/null +++ b/TEMA6/obshee.py @@ -0,0 +1,55 @@ +import random +import pickle +import os + +# Создаем кортеж +num = list(range(1, 126, 1)) +kor = () +for i in num: + kor = kor + (random.randint(6, 56),) +print('Кортеж = ', kor, '\n') +print('Длина кортежа = ', len(kor)) +str_kor = tuple(map(str, kor)) + +fam = ["Туровец", "Снегура", "Ефремов", "Хатюхин", "Шабатов"] + +# Исправленный путь - используем сырую строку или двойные слеши +os.chdir(r'C:\Users\Evgeny\Desktop\python-labs\TEMA6') + +# Запись в файл +f = open('bin.mnz', 'wb') +pickle.dump(str_kor, f) +pickle.dump(fam, f) +f.close() + +# Чтение из файла +f = open('bin.mnz', 'rb') +obj1 = pickle.load(f) +obj2_spis = pickle.load(f) +print('Первый считанный объект', obj1) +print('Второй считанный объект', obj2_spis) + +# Исправлены условия сравнения (добавлено двоеточие) +if obj1 == str_kor: + print('Первый объект совпадает с изначальным символьным кортежем\n') +else: + print('Первый объект НЕ совпадает с изначальным символьным кортежем\n') + +if obj2_spis == fam: + print('Второй объект совпадает с изначальным списком\n') +else: + print('Второй объект НЕ совпадает с изначальным списком\n') + +# Создание списка списков +List = [] +for i in range(0, 125, 5): + List.append(list(str_kor[i:i + 5])) +print('Список списков =', List) + +# Создание отдельных переменных для каждого списка +for i in range(25): + list_name = f"list{i + 1}" # Создается имя переменной (list1, list2,..) + globals()[list_name] = List[i] + +print('Список 1 = ', list1) +print('Список 2 =', list2) diff --git a/TEMA6/oplata.dbf.txt b/TEMA6/oplata.dbf.txt new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/repor.py b/TEMA6/repor.py new file mode 100644 index 0000000..0cb87d4 --- /dev/null +++ b/TEMA6/repor.py @@ -0,0 +1,252 @@ +Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32 +Enter "help" below or click "Help" above for more information. +stroka='Автоматизированная система управления' +stroka +'Автоматизированная система управления' +fff=234.5;gg='Значение температуры = ' +print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции +Значение температуры = 234.5 +print(gg, fff, sep='/') +Значение температуры = /234.5 +print(gg, fff,sep='/',end='***'); print('____') +Значение температуры = /234.5***____ +print() + +print(""" Здесь может выводиться +большой текст, +занимающий несколько строк""") + Здесь может выводиться +большой текст, +занимающий несколько строк +print("Здесь может выводиться", + "большой текст,", + "занимающий несколько строк") + +Здесь может выводиться большой текст, занимающий несколько строк +import sys +sys.stdout.write('Функция write') +Функция write13 +sys.stdout.write('Функция write\n') +Функция write +14 +psw=input('Введите пароль:') +Введите пароль:12g +psw +'12g' +while True: + znach=float(input('Задайте коэф.усиления = ')) + if znach<17.5 or znach>23.8: + print('Ошибка!') + else: + break + + +Задайте коэф.усиления = 17.5 +while True: + znach=float(input('Задайте коэф.усиления = ')) + if znach<17.5 or znach>23.8: + print('Ошибка!') + else: + break + + +Задайте коэф.усиления = 15.4 +Ошибка! +Задайте коэф.усиления = 21.6 +import math +print(eval(input('введите выражение для расчета = '))) +введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) +1.34504378689765 +os.getcwd() +Traceback (most recent call last): + File "", line 1, in + os.getcwd() +NameError: name 'os' is not defined. Did you forget to import 'os'? +import 'os' +SyntaxError: invalid syntax +import os +os.getcwd() +'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313' +os.chdir('C:\Users\User-PC\python-labs\TEMA6') +SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape +os.chdir('C:/Users/User-PC/python-labs/TEMA6') +os.getcwd() +'C:\\Users\\User-PC\\python-labs\\TEMA6' +snegura = str(os.getcwd()) +snegura +'C:\\Users\\User-PC\\python-labs\\TEMA6' +os.chdir('C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313') +snegura = str(os.getcwd()) +snegura +'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313' +os.chdir('C:/Users/User-PC/python-labs/TEMA6') +os.mkdir("папка новая") +os.rmdir("папка новая") +os.mkdir("папка новая") +os.rmdir("папка новая") +os.listdir() +['.gitkeep', 'repor.py', 'report.md', 'report.py', '{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png'] +os.path.isdir("папка новая") +False +os.path.isdir("report.md") +False +fil=os.path.abspath("report.md") +fil +'C:\\Users\\User-PC\\python-labs\\TEMA6\\report.md' +drkt=os.path.dirname(fil) +drkt +'C:\\Users\\User-PC\\python-labs\\TEMA6' +name = os.path.basename(fil) +name +'report.md' +head, tail = os.path.split(fil) +head +'C:\\Users\\User-PC\\python-labs\\TEMA6' +tail +'report.md' +os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA6') +True +os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA60') +False +os.path.isfile(fil) +True +open + +help(open) + +fp=open(file=drkt+'\\zapis1.txt',mode='w') +fp=open(drkt+'\\zapis1.txt','w') +fp=open('zapis1.txt','w') +type(fp) + +fp1=open(drkt+'\\zapis2.bin',mode='wb+') +fp.close() +fp1.close() +sps=list(range(1,13)) +sps +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +fp2=open('zapis3.txt','w') +fp2.write(str(sps[:4])+'\n') +13 +fp2.write(str(sps[4:8])+'\n') +13 +fp2.write(str(sps[8:])+'\n') +16 +fp2.close() +sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]] +fp3=open('zapis4.txt','w') +for i in range(len(sps3)): + stroka4=sps3[i][0]+' '+str(sps3[i][1]) + fp3.write(stroka4) + +11 +11 +12 +fp3.close() +gh=open('zapis5.txt','w') +for r in sps3: + gh.write(r[0]+' '+str(r[1])+'\n') + +gh.close() +SyntaxError: multiple statements found while compiling a single statement +gh=open('zapis5.txt','w') +for r in sps3: + gh.write(r[0]+' '+str(r[1])+'\n') +gh.close() +SyntaxError: invalid syntax +for r in sps3: + gh.write(r[0]+' '+str(r[1])+'\n') + + +12 +12 +13 +gh.close() +gh=open('zapis6.txt','w') +for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n') + +12 +12 +13 +gh.close() +sps1=[] +fp=open('zapis3.txt') +for stroka in fp: + stroka=stroka.rstrip('\n') + stroka=stroka.replace('[','') + stroka=stroka.replace(']','') + sps1=sps1+stroka.split(',') + + +fp.close() +sps +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +sps1 +['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12'] +fp=open('zapis3.txt') +stroka1=fp.read(12) +stroka2=fp.read() +fp.close() +stroka1 +'[1, 2, 3, 4]' +stroka2 +'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n' +import pickle +mnoz1={'pen','book','pen','iPhone','table','book'} #Объект типа «множество» +fp=open('zapis6.mnz','wb') # Бинарный файл – на запись +pickle.dump(mnoz1,fp) #dump – метод записи объекта в файл +fp.close() +fp=open('zapis6.mnz','rb') +mnoz2=pickle.load(fp) #load – метод чтения объекта из бинарного файла +fp.close() +mnoz1 +{'pen', 'book', 'iPhone', 'table'} +mnoz2 +{'pen', 'book', 'iPhone', 'table'} +fp=open('zapis7.2ob','wb') +pickle.dump(mnoz1,fp) +pickle.dump(sps3,fp) +fp.close() +fp=open('zapis7.2ob','rb') +obj1=pickle.load(fp) #Первое обращение к load читает первый объект +obj2=pickle.load(fp) #Второе – читает второй +fp.close() +obj1 +{'pen', 'book', 'iPhone', 'table'} +obj2 +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +mnoz1 +{'pen', 'book', 'iPhone', 'table'} +sps3 +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +import sys +vr_out=sys.stdout #Запоминаем текущий поток вывода +fc=open('Stroka.txt','w') #Откроем файл вывода +sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл +print('запись строки в файл') #Вывод теперь будет не на экран, а в файл +sys.stdout=vr_out #Восстановление текущего потока + print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился + +SyntaxError: unexpected indent +print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился +запись строки на экран +fc.close() +tmp_in = sys.stdin #Запоминаем текущий поток ввода +fd = open("Stroka.txt", "r") #Открываем файл для ввода (чтения) +sys.stdin = fd #Перенацеливаем ввод на файл вместо клавиатуры +sys.stdin +<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'> +while True: + try: + line = input () #Считываем из файла строку +... print(line) # Отображаем считанное +... except EOFError: +... break +... +... +запись строки в файл +>>> fd.close() +... +SyntaxError: unexpected indent +>>> fd.close() +>>> sys.stdin=tmp_in #Не забыть вернуть стандартное назначение для потока ввода diff --git a/TEMA6/report.md b/TEMA6/report.md new file mode 100644 index 0000000..74a43e4 --- /dev/null +++ b/TEMA6/report.md @@ -0,0 +1,438 @@ +# Отчет по теме 6 + +## 1 Запуск интерактивной оболочки IDLE + +Была запущена интерактивная оболочка IDLE. + +## 2 Изучение вывода данных на экран дисплея + +Были изучены и применены различные способы вывода данных на экран. + +## 2.1 Изучение эхо-вывода + +```py +>>>stroka='Автоматизированная система управления' +>>>stroka +'Автоматизированная система управления' +``` + +## 2.2 Изучение вывода данных с помощью печати + +Была изучена функция print для вывода текста. Текст был выведен в одну строку, далее в две строки с использованием экранированных последовательностей, далее был выведен текст с дописанным в конце текстом, используя аргумент end. И также был выведен текст в три строки, используя троиные кавычки. + +```py +>>>fff=234.5;gg='Значение температуры = ' +>>>print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции +Значение температуры = 234.5 +>>>print(gg, fff, sep="\n") + +Значение температуры = +234.5 +>>>print(gg, fff,sep='\n',end='***'); print('____') + +Значение температуры = +234.5***____ +>>>print() + + +>>>print(""" Здесь может выводиться +большой текст, +занимающий несколько строк""") #В этом варианте текст выводится в три отдельные строки как и при вводе команды, благодаря троиным кавычкам. + + Здесь может выводиться +большой текст, +занимающий несколько строк +>>>print("Здесь может выводиться", + "большой текст,", + "занимающий несколько строк") #В данном случае текст выводится подряд в одну строку. + +Здесь может выводиться большой текст, занимающий несколько строк +``` + +## 2.3 Изучение вывода данных с помощью функции write + +Был испортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку. + +``` +>>>import sys +>>>sys.stdout.write('Функция write') +Функция write13 +>>>sys.stdout.write('Функция write') +Функция write13 +>>>sys.stdout.write('Функция write\n') +Функция write +14 +``` + +## 3 Изучение ввода данных с клавиатуры + +С помощью функции input был произведен вывод текста, введенного с клавиатуры. Так же был создан цикл, который просит пользователя ввести значение до тех пор, пока оно не будет удовлетворять определенному интервалу, а потом выводит это значение на дисплей. Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователен с консоли исполняется, и выдается результат расчета. + +```py +>>>psw=input('Введите пароль:') +Введите пароль:12g +>>>psw +'12g' +>>>type(psw) + +``` +Ввод с контролем значения. Пусть вводится число, которое должно находиться в интервале значе-ний от 17.5 до 23.8. + +```py +>>>while True: + znach=float(input('Задайте коэф.усиления = ')) + if znach<17.5 or znach>23.8: + print('Ошибка!') + else: + break + + +Задайте коэф.усиления = 15.4 +Ошибка! +Задайте коэф.усиления = 21.6 +``` + +Ввод и обработка выражения, подлежащего расчету. +```py +>>>import math +>>>print(eval(input('введите выражение для расчета = '))) +введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) +1.34504378689765 +``` + +## 4 Изучение различных способов чтения данных из файла и записи в файл + +Были изучены и применены разные способы чтения и записи данных. + +## 4.1 Изучение модуля os для работы с путями к файлам + +Был просмотрен текущий рабочий каталог, занесен в переменную d. После этого совершен переход в другой рабочий католог. Были самостоятельно изучены и применены методы из модуля os и подмодуля os.path: + +mkdir - создает папку в рабочем каталоге (в приложенном фото видно, что в каталоге появилвсь папка); +![alt text]({2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png) +rmdir - удаляет из каталога пустую папку; +listdir - возвращает список имен файлов/папок в указанном каталоге (или если аргумент не указан, то в текущем каталоге); +path.isdir - возвращает true, если папка является существующей в каталоге. + +Далее была создана переменная, содержащая строку - путь в файлу report и имя данного файла. Используя эту переменную, с помощью функций модуля os была создана строка содержащая только путь, потом только имя, а потом применена функция, которая разделяет в одну переменную - путь, в другую - имя файла. Далее было проверено существование определенного пути, и существование определенного файла с указаном каталоге. + +```py +>>>import os +>>>os.getcwd() +'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313' +>>>turovets = str(os.getcwd()) +>>turovets +'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313' +>>>os.chdir('C:/Users/User-PC/python-labs/TEMA6') +>>>os.mkdir("папка новая") +>>>os.rmdir("папка новая") +>>>os.listdir() +['.gitkeep', 'repor.py', 'report.md', 'report.py', '{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png'] +>>>os.path.isdir("папка новая") +False +>>>fil=os.path.abspath("report.md") +>>>fil +'C:\\Users\\User-PC\\python-labs\\TEMA6\\report.md' +>>>drkt=os.path.dirname(fil) +>>>drkt +'C:\\Users\\User-PC\\python-labs\\TEMA6' +>>>name = os.path.basename(fil) +>>>name +'report.md' +>>>head, tail = os.path.split(fil) +>>>head +'C:\\Users\\User-PC\\python-labs\\TEMA6' +>>>tail +'report.md' +>>>os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA6') +True +>>>os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA60') +False +>>>os.path.isfile(fil) +True +``` + +## 4.2 Изучение обобщенного процесса работы с файлами + +Было определено, что для обмена данными с файлами необходимо: + + • Открыть файла с указанием его имени и цели; + • Выполнить операции обмена данными с файлом; + • Закрыть файл. + +## 4.3 Изучение функции open для открытия файлов с разной целью + +Была применена команда open с различным написанием аргументов, создан файловый обьект. Выведен тип и список атрибутов этого обьекта. + +```py +>>>fp=open(file=drkt+'\\zapis1.txt',mode='w') + +>>>fp=open(drkt+'\\zapis1.txt','w') #если имя файла располагается на месте первого аргумента, а цель использования – на втором, то имена аргументов можно не указывать + +>>>fp=open('zapis1.txt','w') #путь в переменной drkt совпадает с рабочим каталогом, значит его можно опустить, оставив только имя открываемого файла + +>>>type(fp) + + +>>>dir(fp) + +['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines'] + +>>>fp1=open(drkt+'\\zapis2.bin',mode='wb+') +``` + +## 4.4 Изучение закрытия файла + +Файл был закрыт. + +```py +>>>fp.close() +>>>fp1.close() +``` + +## 4.5 Изучение функции write для записи данных в текст + +Был создан список из 12 элементов и поочередно в файл записаны числа из списка в три строки. + +```py +>>>sps=list(range(1,13)) + +>>>sps + +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +>>>fp2=open('zapis3.txt','w') + +>>>fp2.write(str(sps[:4])+'\n') + +13 +>>>fp2.write(str(sps[4:8])+'\n') + +13 +>>>fp2.write(str(sps[8:])+'\n') + +16 +>>>fp2.close() +``` + +![alt text]({BDBC12A7-03FA-405C-B54E-67BB26CD9BB4}.png) + +Далее был создан список из трех списков и с помощью цикла for все элементы списка были вписаны в файл в одну строку. + +```py +>>>sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]] + +>>>sps3 + +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +>>>fp3=open('zapis4.txt','w') + +>>>for i in range(len(sps3)): + stroka4=sps3[i][0]+' '+str(sps3[i][1]) + fp3.write(stroka4) + + +11 +11 +12 +>>>fp3.close() +``` +Вывод: +``` +Иванов И. 1Петров П. 2Сидоров С. 3 +``` + +Далее с помощью цикла for три списка из общего списка были вписаны в файл поочередно в три строки. Запись цикла была сжата в одну строку, и проверено, что при написании той же инструкции в одну строку, содержимое файла не изменяется, относительно предыдущего метода с этими же инструкциями. + +```py +>>>gh=open('zapis5.txt','w') + +>>>for r in sps3: + gh.write(r[0]+' '+str(r[1])+'\n') + +12 +12 +13 +>>>gh.close() +``` +Вывод: +``` +Иванов И. 1 +Петров П. 2 +Сидоров С. 3 +``` + +```py +>>>gh=open('zapis6.txt','w') + +>>>for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n') + + +12 +12 +13 +>>>gh.close() +``` +Вывод: +``` +Иванов И. 1 +Петров П. 2 +Сидоров С. 3 +``` + + +## 4.6 Изучение одного из способов чтения данных из файла с помощью цикла for + +С помощью open был открыт файл для чтения, и из его символов был сконструирован список, состоящий из символов. После символы в списке были преобразованы в числа, и список стал идентичен тому, который создавался ранее и записывался в файл. + +```py +>>>sps1=[] +>>>fp=open('zapis3.txt') +>>>for stroka in fp: + stroka=stroka.rstrip('\n') + stroka=stroka.replace('[','') + stroka=stroka.replace(']','') + sps1=sps1+stroka.split(',') + + +>>>fp.close() +>>>sps +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +>>>sps1 +['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12'] +>>>sps2=[] +>>>for i in sps1: + sps2.append(int(i)) + +>>>sps2 +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +``` + +## 4.7 Изучение способа чтения данных из файла с помощью функции read + +Был открыт текстовый файл и с помощью функции read из него сначала было прочитано и отображено 12 символов, а потом прочитаны остальные символы с помощью функции read без указания аргумента. + +```py +>>>fp=open('zapis3.txt') + +>>>stroka1=fp.read(12) + +>>>stroka2=fp.read() + +>>>fp.close() + +>>>stroka1 + +'[1, 2, 3, 4]' +>>>stroka2 + +'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n' +``` + +## 4.8 Изучение чтения данных из файла по строкам + +Самостоятельно были изучены и применены функции: readline - которая читает одну строку, начиная с указателя текущей позиции, и функция readlines, которая по такому же принципу читает все строки и возвращает их в виде списка. + +```py +>>>fp=open('zapis3.txt') + +>>>s1 = fp.readline() + +>>>s2=fp.readline() + +>>>s1 + +'[1, 2, 3, 4]\n' +>>>s2 + +'[5, 6, 7, 8]\n' +>>>fp.close() + +>>>fp=open('zapis3.txt') +>>>s3 = fp.readlines() +>>>s3 +['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] +``` + +## 4.9 Изучение работы с бинарными файлами с помощью модуля pickle + +С помощью модуля pickle созданное множество было вписано в бинарный файл, а потом данные прочитаны из этого файла. + +```py +>>>import pickle +>>>mnoz1={'pen','book','pen','iPhone','table','book'} #Объект типа «множество» +>>>fp=open('zapis6.mnz','wb') # Бинарный файл – на запись +>>>pickle.dump(mnoz1,fp) #dump – метод записи объекта в файл +>>>fp.close() +``` + +```py +>>>fp=open('zapis6.mnz','rb') +>>>mnoz2=pickle.load(fp) #load – метод чтения объекта из бинарного файла +>>>fp.close() +>>>mnoz2 #Результат не такой как при вводе множества mnoz1, так как множество не имеет повторений и порядка элементов, поэтому автоматически множество обьединило повторяющиеся слова. +{'pen', 'iPhone', 'book', 'table'} +mnoz1 == mnoz2 +True +``` + +Также в файл было записано два обьекта и прочитано поочередно с помощью load. + +```py +>>>fp=open('zapis7.2ob','wb') +>>>pickle.dump(mnoz1,fp) +>>>pickle.dump(sps3,fp) +>>>fp.close() +>>>fp=open('zapis7.2ob','rb') +>>>obj1=pickle.load(fp) #Первое обращение к load читает первый объект +>>>obj2=pickle.load(fp) #Второе – читает второй +>>>fp.close() +>>>obj1 +{'pen', 'iPhone', 'book', 'table'} +>>>mnoz1 +{'pen', 'book', 'iPhone', 'table'} +>>>obj2 +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +>>>sps3 +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +``` + +## 5 Перенаправление потоков ввода и вывода данных. + +Был создан текстовый файл, куда с помощью модуля sys и методы stdout был перенаправлен поток вывода, и в нем был напечатан текст. Далее поток вывода был перенаправлен обратно и проведена проверка с помощью print. + +```py +>>>import sys +>>>vr_out=sys.stdout #Запоминаем текущий поток вывода +>>>fc=open('Stroka.txt','w') #Откроем файл вывода +>>>sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл +>>>print('запись строки в файл') #Вывод теперь будет не на экран, а в файл +>>>sys.stdout=vr_out #Восстановление текущего потока +>>>print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился +запись строки на экран +>>>fc.close() +``` + +Также был перенаправлен ввод на файл, и реализован цикл, в котором считывается текст из файла и печатается на экран. + +```py +>>>tmp_in = sys.stdin #Запоминаем текущий поток ввода +>>>fd = open("Stroka.txt", "r") #Открываем файл для ввода (чтения) +>>>sys.stdin = fd #Перенацеливаем ввод на файл вместо клавиатуры +>>>sys.stdin +<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'> +>>>while True: + try: + line = input () #Считываем из файла строку + print(line) # Отображаем считанное + except EOFError: + break + + +запись строки в файл +>>>fd.close() +>>>sys.stdin=tmp_in #Не забыть вернуть стандартное назначение для потока ввода +``` + +## 6 Завершение работы в IDLE + +Был завершен сеанс в среде IDLE. \ No newline at end of file diff --git a/TEMA6/zapis1.txt b/TEMA6/zapis1.txt new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/zapis2.bin b/TEMA6/zapis2.bin new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/zapis3.txt b/TEMA6/zapis3.txt new file mode 100644 index 0000000..8132aa8 --- /dev/null +++ b/TEMA6/zapis3.txt @@ -0,0 +1,3 @@ +[1, 2, 3, 4] +[5, 6, 7, 8] +[9, 10, 11, 12] diff --git a/TEMA6/zapis4.txt b/TEMA6/zapis4.txt new file mode 100644 index 0000000..edd0c45 --- /dev/null +++ b/TEMA6/zapis4.txt @@ -0,0 +1 @@ + . 1 . 2 . 3 \ No newline at end of file diff --git a/TEMA6/zapis5.txt b/TEMA6/zapis5.txt new file mode 100644 index 0000000..ecde2d7 --- /dev/null +++ b/TEMA6/zapis5.txt @@ -0,0 +1,3 @@ + . 1 + . 2 + . 3 diff --git a/TEMA6/zapis6.mnz b/TEMA6/zapis6.mnz new file mode 100644 index 0000000..ad10085 Binary files /dev/null and b/TEMA6/zapis6.mnz differ diff --git a/TEMA6/zapis6.txt b/TEMA6/zapis6.txt new file mode 100644 index 0000000..ecde2d7 --- /dev/null +++ b/TEMA6/zapis6.txt @@ -0,0 +1,3 @@ + . 1 + . 2 + . 3 diff --git a/TEMA6/zapis7.2ob b/TEMA6/zapis7.2ob new file mode 100644 index 0000000..833483f Binary files /dev/null and b/TEMA6/zapis7.2ob differ diff --git a/TEMA6/{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png b/TEMA6/{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png new file mode 100644 index 0000000..4208e7f Binary files /dev/null and b/TEMA6/{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png differ diff --git a/TEMA6/{4585BE4A-ABEE-4EB8-979E-CED135733C96}.png b/TEMA6/{4585BE4A-ABEE-4EB8-979E-CED135733C96}.png new file mode 100644 index 0000000..a502b75 Binary files /dev/null and b/TEMA6/{4585BE4A-ABEE-4EB8-979E-CED135733C96}.png differ diff --git a/TEMA6/{854A9290-003D-4326-B7DB-ECD39C3AD8FB}.png b/TEMA6/{854A9290-003D-4326-B7DB-ECD39C3AD8FB}.png new file mode 100644 index 0000000..1927fd0 Binary files /dev/null and b/TEMA6/{854A9290-003D-4326-B7DB-ECD39C3AD8FB}.png differ diff --git a/TEMA6/{9A45AC78-7541-4B74-BD4D-ADD078966F77}.png b/TEMA6/{9A45AC78-7541-4B74-BD4D-ADD078966F77}.png new file mode 100644 index 0000000..8da44e7 Binary files /dev/null and b/TEMA6/{9A45AC78-7541-4B74-BD4D-ADD078966F77}.png differ diff --git a/TEMA6/{BDBC12A7-03FA-405C-B54E-67BB26CD9BB4}.png b/TEMA6/{BDBC12A7-03FA-405C-B54E-67BB26CD9BB4}.png new file mode 100644 index 0000000..cec88e6 Binary files /dev/null and b/TEMA6/{BDBC12A7-03FA-405C-B54E-67BB26CD9BB4}.png differ diff --git a/TEMA6/{C091738E-D897-4FB7-9424-D31BEA185FC9}.png b/TEMA6/{C091738E-D897-4FB7-9424-D31BEA185FC9}.png new file mode 100644 index 0000000..aa10135 Binary files /dev/null and b/TEMA6/{C091738E-D897-4FB7-9424-D31BEA185FC9}.png differ diff --git a/TEMA6/{F0AB1936-ADF9-4D4C-A1DF-1F38DEEF97AA}.png b/TEMA6/{F0AB1936-ADF9-4D4C-A1DF-1F38DEEF97AA}.png new file mode 100644 index 0000000..4a7754e Binary files /dev/null and b/TEMA6/{F0AB1936-ADF9-4D4C-A1DF-1F38DEEF97AA}.png differ