From 0dad59dc27940faf6d518a09fecb355327979b07 Mon Sep 17 00:00:00 2001 From: Artem Date: Mon, 10 Nov 2025 09:30:09 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BC=D0=B0=206?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA6/report.md | 304 ++++++++++++++++++++++++++++++++++++++++++++++ TEMA6/task.md | 0 TEMA6/Рис4.png | Bin 0 -> 11643 bytes TEMA6/рис1.png | Bin 0 -> 4599 bytes TEMA6/рис2.png | Bin 0 -> 11717 bytes TEMA6/рис3.png | Bin 0 -> 6769 bytes 6 files changed, 304 insertions(+) create mode 100644 TEMA6/report.md create mode 100644 TEMA6/task.md create mode 100644 TEMA6/Рис4.png create mode 100644 TEMA6/рис1.png create mode 100644 TEMA6/рис2.png create mode 100644 TEMA6/рис3.png diff --git a/TEMA6/report.md b/TEMA6/report.md new file mode 100644 index 0000000..0d40d58 --- /dev/null +++ b/TEMA6/report.md @@ -0,0 +1,304 @@ +# Отчет по Теме 6 + +Турханов Артем, А-03-23 + +## 1 Вывод данных на экран дисплея +```py +>>> stroka='Автоматизированная система управления' +>>> stroka +'Автоматизированная система управления' +>>> fff=234.5;gg='Значение температуры = ' +>>> print(gg, fff) +Значение температуры = 234.5 +>>> print(""" Здесь может выводиться +большой текст, +занимающий несколько строк""") + Здесь может выводиться +большой текст, +занимающий несколько строк +>>> print("Здесь может выводиться", + "большой текст,", + "занимающий несколько строк") +Здесь может выводиться большой текст, занимающий несколько строк +>>> import sys +>>> sys.stdout.write('Функция write') +Функция write13 +>>> sys.stdout.write('Функция write\n') +Функция write +14 +>>> sys.stdout.write('Функция write\n') +Функция write +14 +>>> sys.stdout.write('Функция write') +Функция write13 +>>> sys.stdout.write('Hello, World!') +Hello, World!13 +``` +## 2 Ввод данных с клавиатуры +```py +>>> psw=input('Введите пароль:') +Введите пароль:qwertyasd +>>> psw +'qwertyasd' +>>> type(psw) + +>>> while True: + znach=float(input('Задайте коэф.усиления = ')) + if znach<17.5 or znach>23.8: + print('Ошибка!') + else: + break + +Задайте коэф.усиления = 15 +Ошибка! +Задайте коэф.усиления = 25 +Ошибка! +Задайте коэф.усиления = 20 +>>> 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 +``` +## 3 Ввод-вывод при работе с файлами +```py +>>> import os +>>> os.getcwd() +'C:\\Users\\Acer\\AppData\\Local\\Programs\\Python\\Python313' +>>> Turkhanov = os.getcwd() +>>> print(Turkhanov) +C:\Users\Acer\AppData\Local\Programs\Python\Python313 +>>> os.chdir('D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEA6\\') + +Traceback (most recent call last): + File "", line 1, in + os.chdir('D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEA6\\') +FileNotFoundError: [WinError 2] Не удается найти указанный файл: 'D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEA6\\' +KeyboardInterrupt +>>> path = r'D:\!!!Download\Documents\учёба МЭИ\5 СЕМЕСТР\GIT\python-labs\TEMA6' +>>> os.chdir(path) +>>> os.getcwd() +'D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEMA6' +>>> os.listdir() +['.gitkeep', 'report.md', 'task.md', 'test.md'] +>>> os.mkdir('NewDir') +>>> os.listdir() +['.gitkeep', 'NewDir', 'report.md', 'task.md', 'test.md'] +>>> os.path.isdir('NewDir') +True +>>> os.rmdir('NewDir') +>>> os.listdir() +['.gitkeep', 'report.md', 'task.md', 'test.md'] +>>> os.path.isdir('NewDir') +False +>>> os.path.abspath('report.md') +'D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEMA6\\report.md' +>>> os.path.abspath('task.md') +'D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEMA6\\task.md' +>>> fil = os.path.abspath('task.md') +>>> drkt=os.path.dirname(fil); drkt +'D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEMA6' +>>> os.path.basename(fil) +'task.md' +>>> os.path.split(fil) +('D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEMA6', 'task.md') +>>> os.path.exists(fil) +True +>>> os.path.exists('D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEMA6\\file.md') +False +>>> os.path.isfile(fil) +True +>>> os.path.isfile('D:\\!!!Download\\Documents\\учёба МЭИ\\5 СЕМЕСТР\\GIT\\python-labs\\TEMA6\\file.md') +False +>>> fp=open(file=drkt+'\\zapis1.txt',mode='w') +>>> 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+') +>>> fp.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() +``` +![Рис1.png](Рис1.png) +Заметим, что элементы списка sps разделены на 3 группы по 4 элемента и записаны в файл zapis3.txt построчно. Получилось 3 строки. +```py +>>> 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() +``` +![Рис2.png](Рис2.png) +Получилось не очень красиво отобразить информацию, так как нет переноса на новую строку. +```py +>>> gh=open('zapis5.txt','w') +>>> for r in sps3: + gh.write(r[0]+' '+str(r[1])+'\n') + +12 +12 +13 +>>> gh.close() +``` +![Рис3.png](Рис3.png) +Так как мы добавили символ переноса на новую строку, получилось красивее. +```py +>>> sps1=[] +>>> fp=open('zapis3.txt') +>>> for stroka in fp: + stroka=stroka.rstrip('\n') + stroka=stroka.replace('[','') + stroka=stroka.replace(']','') + stroka=stroka.replace(']','') + sps1.append(stroka) + +>>> fp.close() +>>> sps1 +['1, 2, 3, 4', '5, 6, 7, 8', '9, 10, 11, 12'] +>>> sps +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +``` +Видно, что список, полученных в результате чтения данных из файла, отличается от исходного списка тем, что его элементы - строки, содержащие 4 числа. Чтобы убрать непохожесть, можно выполнить, например, следующие инструкции: +```py +>>> sps1 = [] +>>> fp=open('zapis3.txt') +>>> for stroka in fp: + stroka=stroka.rstrip('\n') + stroka=stroka.replace('[','') + stroka=stroka.replace(']','') + stroka=stroka.replace(']','') + sps1+=list(map(int, stroka.split(','))) + +>>> sps1 +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +>>> sps +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +>>> fp.close() + +>>> 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' +>>> fp=open('zapis3.txt') +>>> for i in range(3): + print(fp.readline()) + +[1, 2, 3, 4] + +[5, 6, 7, 8] + +[9, 10, 11, 12] + +>>> fp.close() + +>>> fp=open('zapis3.txt') +>>> fp.readlines() +['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] +>>> fp.close() + +>>> fp=open('zapis3.txt') +>>> type(fp.readline()) + +>>> fp.readline() +'[5, 6, 7, 8]\n' +>>> fp.close() + +>>> 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() + +>>> mnoz2 +{'book', 'pen', 'table', 'iPhone'} +>>> mnoz1 +{'book', 'pen', 'table', 'iPhone'} +>>> mnoz1 == mnoz2 +True +``` +Объект mnoz2 не совпадает с тем, что было записано при инициализации в множество mnoz1, так как по свойству множеств были отброшены все повторяющиеся элементы. +```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; mnoz1; obj1 == mnoz1 +{'book', 'pen', 'table', 'iPhone'} +{'book', 'pen', 'table', 'iPhone'} +True +>>> obj2; sps3; obj2 == sps3 +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +True +``` +## 4 Перенаправление потоков ввода и вывода данных +```py +>>> import sys +>>> vr_out=sys.stdout #Запоминаем текущий поток вывода +>>> fc=open('Stroka.txt','w') #Откроем файл вывода +>>> sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл +>>> print('запись строки в файл') #Вывод теперь будет не на экран, а в файл +>>> print('запись строки в файл') #Вывод теперь будет не на экран, а в файл +>>> sys.stdout=vr_out #Восстановление текущего потока +>>> print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился +запись строки на экран +>>> fc.close() +``` +![Рис4.png](Рис4.png) + +```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 #Не забыть вернуть стандартное назначение для потока ввода +``` \ No newline at end of file diff --git a/TEMA6/task.md b/TEMA6/task.md new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/Рис4.png b/TEMA6/Рис4.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8469d992d5b76e3e5b7b34d6cb6f32514d7eca GIT binary patch literal 11643 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 literal 0 HcmV?d00001