diff --git a/TEMA6/OPLATA.dbf b/TEMA6/OPLATA.dbf new file mode 100644 index 0000000..e69de29 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..cca1b62 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..92093b5 --- /dev/null +++ b/TEMA6/report.md @@ -0,0 +1,365 @@ +# Отчет по теме 6 + +Лыкова Елизавета, А-01-23 + +## 1. Запуск IDLE, привязка католога, создание файла отчета. + +```py +import os +os.chdir("C:\\Users\\Home\\Desktop\\python-labs\\TEMA6") +``` + +## 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. Ввод данных с клавиатуры. + +```py +psw=input('Введите пароль:') +Введите пароль:123 +psw +'123' +type(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 +os.getcwd() +'C:\\Users\\Home\\Desktop\\python-labs\\TEMA6' +Lykova = os.getcwd() +print(Lykova) +C:\Users\Home\Desktop\python-labs\TEMA6 +os.mkdir('C:\\Users\\Home\\Desktop\\python-labs\\newdir') #Создает новую директорию. +os.rmdir('C:\\Users\\Home\\Desktop\\python-labs\\newdir') #Удаляет директорию. +os.listdir('C:\\Users\\Home\\Desktop\\python-labs') +['.git', '.gitignore', 'README.md', 'TEMA0', 'TEMA1', 'TEMA2', 'TEMA3', 'TEMA4', 'TEMA5', 'TEMA6', 'TEMA7', 'TEMA8', 'TEMA9'] +os.path.isdir('C:\\Users\\Home\\Desktop\\python-labs') #Проверяет, является ли указанный +True +fil = os.path.abspath('OPLATA.dbf') +fil +'C:\\Users\\Home\\Desktop\\python-labs\\TEMA6\\OPLATA.dbf' +drkt = os.path.dirname(fil) +drkt +'C:\\Users\\Home\\Desktop\\python-labs\\TEMA6' +os.path.basename(fil) +'OPLATA.dbf' +os.path.split(fil) +('C:\\Users\\Home\\Desktop\\python-labs\\TEMA6', 'OPLATA.dbf') #Функция отдельно выводит путь к файлу и его наименование. +os.path.exists(fil) +True +fil2 = os.path.abspath('neoplata.dbf') +os.path.exists(fil2) +False +os.path.isfile(fil) +True +os.path.isfile(os.path.dirname(fil)+'fil1.txt') +False +``` + +## 4.2 Общая схема работы с файлом. + +## 4.3 Функция open. + +```py +help(open) +Help on built-in function open in module _io: + +open( + file, + mode='r', + buffering=-1, + encoding=None, + errors=None, + newline=None, + closefd=True, + opener=None +) + ... + + ========= =============================================================== + Character Meaning + --------- --------------------------------------------------------------- + 'r' open for reading (default) + 'w' open for writing, truncating the file first + 'x' create a new file and open it for writing + 'a' open for writing, appending to the end of the file if it exists + 'b' binary mode + 't' text mode (default) + '+' open a disk file for updating (reading and writing) + ========= =============================================================== + + The default mode is 'rt' (open for reading text). For binary random + access, the mode 'w+b' opens and truncates the file to 0 bytes, while + 'r+b' opens the file without truncation. The 'x' mode implies 'w' and + raises an `FileExistsError` if the file already exists. + + ... + + * On input, if newline is None, universal newlines mode is + enabled. Lines in the input can end in '\n', '\r', or '\r\n', and + these are translated into '\n' before being returned to the + caller. If it is '', universal newline mode is enabled, but line + endings are returned to the caller untranslated. If it has any of + the other legal values, input lines are only terminated by the given + string, and the line ending is returned to the caller untranslated. + + * On output, if newline is None, any '\n' characters written are + translated to the system default line separator, os.linesep. If + newline is '' or '\n', no translation takes place. If newline is any + of the other legal values, any '\n' characters written are translated + to the given string. + + ... + + open() returns a file object whose type depends on the mode, and + through which the standard file operations such as reading and writing + are performed. When open() is used to open a file in a text mode ('w', + 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open + a file in a binary mode, the returned class varies: in read binary + mode, it returns a BufferedReader; in write binary and append binary + modes, it returns a BufferedWriter, and in read/write mode, it returns + a BufferedRandom. + + It is also possible to use a string or bytearray as a file for both + reading and writing. For strings StringIO can be used like a file + opened in a text mode, and for bytes a BytesIO can be used like a file + opened in a binary mode. +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'] +``` + +## 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() +``` + +[Созданный файл](zapis3.txt) + +```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) + +fp3.close() +``` + +[Созданный файл](zapis4.txt) + +```py +gh=open('zapis5.txt','w') +for r in sps3: + gh.write(f'{r[0]} {str(r[1])}\n') + +gh.close() +``` + +## 4.6 Первый способ чтения информации из текстового файла. + +```py +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'] +sps +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +spsnew = [int(i.strip()) for i in sps1] +spsnew +[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() + +print(stroka1) +[1, 2, 3, 4] +print(stroka2) + +[5, 6, 7, 8] +[9, 10, 11, 12] +``` + +## 4.8 Методы readline и readlines. + +```py +fp = open('zapis3.txt') +r = fp.readline() +rr = fp.readline() +print(r) +[1, 2, 3, 4] +print(rr) +[5, 6, 7, 8] +fp.close() +fp = open('zapis3.txt') +rrr = fp.readlines() +print(rrr) +['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] +fp.close() +``` + +## 4.9 Функции модуля pickle. + +```py +import pickle +mnoz1={'pen','book','pen','iPhone','table','book'} +fp = open('zapis6.mnz','wb') +pickle.dump(mnoz1,fp) +fp.close() +``` + +![белиберда](ris1.png) + +```py +fp=open('zapis6.mnz','rb') +mnoz2=pickle.load(fp) +fp.close() +mnoz2 +{'book', 'iPhone', 'pen', 'table'} +mnoz1 == mnoz2 +True +``` + +Результат ввода mnoz1 и вывода mnoz2 различаются, потому что множество не имеет порядка элементов и их повторений. + +```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) +obj2=pickle.load(fp) +fp.close() +print(obj1,obj2) +{'book', 'iPhone', 'pen', 'table'} [['Иванов И.', 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() +``` + +[Запись в файл](Stroka.txt) + +```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/ris1.png b/TEMA6/ris1.png new file mode 100644 index 0000000..7f8f2f9 Binary files /dev/null and b/TEMA6/ris1.png differ diff --git a/TEMA6/task.md b/TEMA6/task.md new file mode 100644 index 0000000..14233cc --- /dev/null +++ b/TEMA6/task.md @@ -0,0 +1,63 @@ +# Общее контрольное задание по теме 6 + +Лыкова Елизавета, А-01-23 + +#Задание + +Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следующие операции: + +• Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк. + +• Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников. + +• Записывается кортеж в бинарный файл. + +• Записывается в этот же файл список и закрывается файл. + +• Открывается этот файл для чтения и считывает из него данные в 2 новых объекта. + +• Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение. + +• Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами. + +# Решение + +```py +import random +kort = tuple(str(random.randint(6,56)) for _ in range(125)) +kort +('32', '39', '38', '16', '25', '38', '38', '13', '49', '25', '10', '22', '16', '30', '50', '30', '53', '8', '39', '53', '47', '41', '52', '12', '27', '14', '24', '12', '46', '29', '53', '48', '42', '8', '54', '27', '30', '56', '22', '10', '14', '8', '20', '48', '51', '13', '41', '21', '9', '9', '8', '6', '54', '16', '29', '42', '24', '39', '17', '27', '31', '10', '37', '7', '51', '27', '9', '28', '49', '52', '48', '28', '9', '44', '31', '24', '28', '25', '12', '27', '42', '53', '46', '48', '15', '53', '33', '25', '25', '25', '37', '8', '7', '31', '31', '38', '6', '11', '47', '16', '9', '29', '51', '42', '23', '18', '17', '24', '18', '7', '18', '10', '15', '7', '47', '39', '55', '12', '14', '53', '38', '35', '52', '10', '56') +spis = ['Lykova','Solovyova','Kovalenko','Podolsky','Melnikov'] +fp = open('bin.mnz','wb') +import pickle +pickle.dump(kort,fp) +pickle.dump(spis,fp) +fp.close() +fp = open('bin.mnz','rb') +obj1 = pickle.load(fp) +obj2 = pickle.load(fp) +obj1 +('32', '39', '38', '16', '25', '38', '38', '13', '49', '25', '10', '22', '16', '30', '50', '30', '53', '8', '39', '53', '47', '41', '52', '12', '27', '14', '24', '12', '46', '29', '53', '48', '42', '8', '54', '27', '30', '56', '22', '10', '14', '8', '20', '48', '51', '13', '41', '21', '9', '9', '8', '6', '54', '16', '29', '42', '24', '39', '17', '27', '31', '10', '37', '7', '51', '27', '9', '28', '49', '52', '48', '28', '9', '44', '31', '24', '28', '25', '12', '27', '42', '53', '46', '48', '15', '53', '33', '25', '25', '25', '37', '8', '7', '31', '31', '38', '6', '11', '47', '16', '9', '29', '51', '42', '23', '18', '17', '24', '18', '7', '18', '10', '15', '7', '47', '39', '55', '12', '14', '53', '38', '35', '52', '10', '56') +obj2 +['Lykova', 'Solovyova', 'Kovalenko', 'Podolsky', 'Melnikov'] +if obj1 == kort: + print('Объекты совпадают') +else: print('Объекты не совпадают') + +Объекты совпадают +if obj2 == spis: + print('Объекты совпадают') +else: print('Объекты не совпадают') + +Объекты совпадают +for i in range(0,125,5): + exec('list' + str(i//5+1) + ' = ' + str(list(obj1[i:i+5]))) + + +list1 +['32', '39', '38', '16', '25'] +list2 +['38', '38', '13', '49', '25'] +list3 +['10', '22', '16', '30', '50'] +``` \ 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..b2ba8ec --- /dev/null +++ b/TEMA6/zapis4.txt @@ -0,0 +1 @@ +Иванов И. 1Петров П. 2Сидоров С. 3 \ No newline at end of file diff --git a/TEMA6/zapis6.mnz b/TEMA6/zapis6.mnz new file mode 100644 index 0000000..ee84b0d 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..80c26ec Binary files /dev/null and b/TEMA6/zapis7.2ob differ