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..ac31359 Binary files /dev/null and b/TEMA6/bin.mnz differ diff --git a/TEMA6/report.md b/TEMA6/report.md new file mode 100644 index 0000000..92e0ac3 --- /dev/null +++ b/TEMA6/report.md @@ -0,0 +1,281 @@ +# Отчет по теме 6 + +Мамакин Ярослав, А-02-23 + +## 1 Начало работы + +Запустил среду IDLE, установил рабочую папку + +## 2 Вывод данных на экран дисплея + +## 2.1 Эхо-вывод + +```py +>>> stroka='Автоматизированная система управления' +>>> stroka +'Автоматизированная система управления' +``` + +## 2.2 Вывод через print + +```py +>>> 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("Здесь может выводиться", +... "большой текст,", +... "занимающий несколько строк") +... +Здесь может выводиться большой текст, занимающий несколько строк +``` + +## 2.3 Вывод с использованием метода write + +```py +>>> import sys +>>> sys.stdout.write('Функция write') +Функция write13 +>>> sys.stdout.write('Функция write\n') +Функция write +14 +``` + +## 3 Ввод с клавиатуры через input + +```py +>>> psw=input('Введите пароль:') +Введите пароль:роялб. +>>> psw +'роялб.' +>>> 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 +``` + +## 4 Ввод-вывод при работе с файлами + +## 4.1 Функции для работы с путем к файлу + +```py +>>> import os +>>> mamakin = os.getcwd() +>>> print(mamakin) +C:\Users\uprkt\Desktop\ПО\python-labs\TEMA6 +>>> os.mkdir('Papka') +>>> os.listdir() +['.gitkeep', 'Papka', 'report.md'] +>>> os.path.isdir('Papka') +True +>>> fil=os.path.abspath("report.md") +>>> fil +'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA6\\report.md' +>>> drkt=os.path.dirname(fil) +>>> drkt +'C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA6' +>>> os.path.basename(fil) +'report.md' +>>> os.path.split(fil) +('C:\\Users\\uprkt\\Desktop\\ПО\\python-labs\\TEMA6', 'report.md') +>>> os.path.exists(fil) +True +>>> os.path.exists('C:\\taxes.txt') +False +>>> os.path.isfile(fil) +True +>>> os.path.isfile(os.path.dirname(fil)+'fil1.txt') +False + +``` + +## 4.3 Функция open + +```py +>>> fp=open(file=drkt+'\\zapis1.txt',mode='w') +>>> fp=open(drkt+'\\zapis1.txt','w') +>>> fp=open('zapis1.txt','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+') +>>> os.path.isfile(drkt+'\\zapis2.bin') +True +``` + +## 4.4 Закрытие файла + +```py +>>> fp.close() +``` + +## 4.5 Запись в файл с помощью write + +```py +>>> sps=list(range(1,13)) +>>> 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() +``` +!(ris1.png) +```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() +``` +!(ris2.png) +```py +>>> gh=open('zapis5.txt','w') +>>> for r in sps3: +... gh.write(r[0]+' '+str(r[1])+'\n') +... +12 +12 +13 +>>> gh.close() +``` +!(ris3.png) + +## 4.6 Чтение информации из файла + +```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() +sps1 +['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12'] +``` + +## 4.7 Чтение из файла с помощью метода 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('zapis5.txt') +strok3=fp.readline() +strok4=fp.readlines() +strok3 +'Иванов И. 1\n' +strok4 +['Петров П. 2\n', 'Сидоров С. 3\n'] +fp.close() +``` + +## 4.9 Работа с бинарными файлами + +```py +import pickle +mnoz1={'pen','book','pen','iPhone','table','book'} +fp=open('zapis6.mnz','wb') +pickle.dump(mnoz1,fp) +fp.close() +``` +!(ris4.png) +```py +>>> fp=open('zapis6.mnz','rb') +>>> mnoz2=pickle.load(fp) +>>> fp.close() +>>> mnoz2 +{'iPhone', 'pen', 'book', 'table'} +>>> mnoz2 is mnoz1 +False +>>> mnoz2 == mnoz1 +True +>>> fp=open('zapis7.2ob','wb') +>>> pickle.dump(mnoz1,fp) +>>> pickle.dump(sps3,fp) +>>> fp.close() +>>> fp=open('zapis7.2ob','rb') +>>> obj1=pickle.load(fp) +>>> obj2=pickle.load(fp) +>>> fp.close() +>>> obj1 +{'iPhone', 'pen', 'book', 'table'} +>>> obj2 +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +``` + +## 5 Перенаправление потоков + +```py +>>> import sys +>>> vr_out=sys.stdout +>>> fc=open('Stroka.txt','w') +>>> sys.stdout=fc +>>> print('запись строки в файл') +>>> sys.stdout=vr_out +>>> 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() +>>> sys.stdin=tmp_in +``` +!(ris5.png) + diff --git a/TEMA6/ris1.png b/TEMA6/ris1.png new file mode 100644 index 0000000..fd43bac Binary files /dev/null and b/TEMA6/ris1.png differ diff --git a/TEMA6/ris2.png b/TEMA6/ris2.png new file mode 100644 index 0000000..1bc99b6 Binary files /dev/null and b/TEMA6/ris2.png differ diff --git a/TEMA6/ris3.png b/TEMA6/ris3.png new file mode 100644 index 0000000..d31f48f Binary files /dev/null and b/TEMA6/ris3.png differ diff --git a/TEMA6/ris4.png b/TEMA6/ris4.png new file mode 100644 index 0000000..95909ae Binary files /dev/null and b/TEMA6/ris4.png differ diff --git a/TEMA6/ris5.png b/TEMA6/ris5.png new file mode 100644 index 0000000..6441e6f Binary files /dev/null and b/TEMA6/ris5.png differ diff --git a/TEMA6/task.md b/TEMA6/task.md new file mode 100644 index 0000000..5c153e0 --- /dev/null +++ b/TEMA6/task.md @@ -0,0 +1,45 @@ +## Общее контрольное задание по теме 6 + +Мамакин Ярослав, А-02-23 + +## Задание + +Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следую-щие операции: +• Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк. +• Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников. +• Записывается кортеж в бинарный файл. +• Записывается в этот же файл список и закрывается файл. +• Открывается этот файл для чтения и считывает из него данные в 2 новых объекта. +• Проверяется на совпадение новых объектов с исходными и выводится соответствующее со-общение. +• Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде от-дельных списков со своими именами. + +## Решение + +```py +import random +import os +import pickle +random.seed() +kort = tuple([str(random.randint(6, 56)) for i in range(125)]) +print(kort) +fam = ['Мамакин', 'Кузьменко', 'Шабатов', 'Похил', 'Симанков'] +os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA6') +f = open('bin.mnz', 'wb') +pickle.dump(kort, f) +pickle.dump(fam, f) +f.close() +f = open('bin.mnz', 'rb') +obj1 = pickle.load(f) +obj2 = pickle.load(f) +if obj1 == kort and obj2 == fam: + print('Объекты совпадают') +for i in range(0, len(kort), 5): + exec(f'spis{i} = kort[i:i+5]') +print(spis0) + += RESTART: C:/Users/uprkt/Desktop/ПО/python-labs/TEMA6/task.py +('21', '31', '21', '25', '16', '7', '19', '37', '30', '12', '27', '45', '38', '26', '31', '40', '42', '40', '44', '11', '49', '20', '17', '54', '44', '14', '33', '25', '49', '26', '9', '12', '19', '31', '25', '7', '15', '25', '33', '21', '48', '11', '38', '56', '53', '55', '46', '8', '22', '35', '35', '46', '14', '17', '42', '55', '50', '24', '10', '26', '16', '45', '41', '18', '24', '40', '28', '18', '22', '50', '19', '40', '16', '33', '32', '43', '20', '18', '47', '56', '56', '35', '27', '22', '20', '37', '25', '22', '15', '48', '39', '50', '35', '22', '20', '24', '35', '21', '31', '8', '23', '18', '28', '54', '55', '55', '45', '37', '34', '38', '27', '34', '48', '53', '18', '49', '33', '19', '18', '33', '33', '17', '31', '52', '31') +Объекты совпадают +('21', '31', '21', '25', '16') +``` + diff --git a/TEMA6/task.py b/TEMA6/task.py new file mode 100644 index 0000000..c7f68f6 --- /dev/null +++ b/TEMA6/task.py @@ -0,0 +1,21 @@ +import random +import os +import pickle +random.seed() +kort = tuple([str(random.randint(6, 56)) for i in range(125)]) +print(kort) +fam = ['Мамакин', 'Кузьменко', 'Шабатов', 'Похил', 'Симанков'] +os.chdir(r'C:\Users\uprkt\Desktop\ПО\python-labs\TEMA6') +f = open('bin.mnz', 'wb') +pickle.dump(kort, f) +pickle.dump(fam, f) +f.close() +f = open('bin.mnz', 'rb') +obj1 = pickle.load(f) +obj2 = pickle.load(f) +if obj1 == kort and obj2 == fam: + print('Объекты совпадают') +for i in range(0, len(kort), 5): + exec(f'spis{i} = kort[i:i+5]') +print(spis0) + 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..68f33e0 Binary files /dev/null and b/TEMA6/zapis6.mnz differ diff --git a/TEMA6/zapis7.2ob b/TEMA6/zapis7.2ob new file mode 100644 index 0000000..e446994 Binary files /dev/null and b/TEMA6/zapis7.2ob differ