Alex 1 месяц назад
Родитель 692e40b4aa
Сommit d16f8a334e

Двоичные данные
TEMA6/Screen1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 24 KiB

Двоичные данные
TEMA6/Screen2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 33 KiB

Двоичные данные
TEMA6/Screen3.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.9 KiB

Двоичные данные
TEMA6/Screen4.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.1 KiB

@ -0,0 +1,371 @@
# Отчёт по ТЕМЕ №6
Криштул Александр, А-03-23
## 1. Начало работы
```py
>>> import os
>>> os.chdir(r"C:\Users\alexv\Desktop\4\python-labs\TEMA6")
>>> os.getcwd()
'C:\\Users\\alexv\\Desktop\\4\\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 объекта sys.stdout
Объект stdout представляет собой поток стандартного вывода – объект, в который программы выводят символьное представление данных. Обычно это – экран дисплея. Объект находится в модуле sys, который надо импортировать.
```py
>>> import sys
>>> sys.stdout.write('Функция write')
Функция write13
>>> sys.stdout.write('Функция write\n')
Функция write
14
```
## 3. Ввод данных с клавиатуры
```py
>>> psw = input('Введите пароль: ')
>>> Введите пароль: 145400147
>>> psw
'145400147'
>>> type(psw)
<class 'str'>
>>> while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 48.8
Ошибка!
Задайте коэф.усиления = 21.6
>>> import math
>>> print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## 4. Ввод-вывод при работе с файлами
### 4.1. Функции для работы с путем к файлу
```py
>>> import os
>>> os.chdir(r"C:\Users\alexv\Desktop\4\python-labs\TEMA6")
>>> os.getcwd()
'C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6'
>>> Krishtul = os.getcwd()
>>> print(Krishtul)
C:\Users\alexv\Desktop\4\python-labs\TEMA6
```
Методы вложенного модуля path (mkdir, rmdir, listdir и isdir):
```py
>>> os.mkdir("new")
>>> os.listdir()
['.gitkeep', 'new', 'report.md', 'task.md', 'test.md']
>>> os.rmdir("new")
>>> os.listdir()
['.gitkeep', 'report.md', 'task.md', 'test.md']
>>> os.path.isdir('C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6')
True
>>> os.path.isdir('C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA78')
False
```
```py
>>> os.path.abspath("oplata.dbf")
'C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6\\oplata.dbf'
>>> fil=os.path.abspath("oplata.dbf")
>>> fil
'C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6\\oplata.dbf'
>>> drkt=os.path.dirname(fil)
>>> drkt
'C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6'
>>> os.path.basename(fil)
'oplata.dbf'
>>> os.path.split(fil)
('C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6', 'oplata.dbf')
>>> os.path.exists(fil)
True
>>> 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')
>>> drkt
'C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6'
>>> 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']
>>> fp=open(file=drkt+'\\zapis1.txt', mode='w')
>>> fp
<_io.TextIOWrapper name='C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6\\zapis1.txt' mode='w' encoding='cp1251'>
>>> fp1=open(drkt+'\\zapis2.bin',mode='wb+')
>>> fp1
<_io.BufferedRandom name='C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6\\zapis2.bin'>
>>> drkt
'C:\\Users\\alexv\\Desktop\\4\\python-labs\\TEMA6'
>>> fp.close()
```
**w** — запись с созданием нового файла или перезапись существующего файла,
**w+** — чтение и запись/перезапись файла,
**r** — только чтение (это значение - по умолчанию),
**r+** — чтение и/или запись в существующий файл,
**a** — запись в конец существующего файла или, если его нет, запись с созданием файла,
**a+** — то же, что и в «a», но с возможностью чтения из файла.
### 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()
```
Результат выполнения:
<image src = "Screen1.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()
>>> gh=open('zapis5.txt','w')
>>> for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
>>> gh.close()
```
Результат выполнения:
<image src = "Screen2.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()
>>> print(sps1)
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
>>> for i in range(len(sps1)):
sps1[i] = int(sps1[i])
>>> sps1==sps
True
```
### 4.7. Чтение информации из файла с помощью метода read
```py
>>> fp=open('zapis3.txt')
>>> stroka1=fp.read(12)
>>> stroka2=fp.read()
>>> fp.close()
>>> print(stroka1)
[1, 2, 3, 4]
>>> stroka2
>>> '\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
>>> print(stroka2)
[5, 6, 7, 8]
[9, 10, 11, 12]
```
### 4.8. Чтение информации с помощью методов readline и readlines
```py
>>> fp=open('zapis3.txt')
>>> first_line = fp.readline()
>>> first_line
'[1, 2, 3, 4]\n'
>>> all_line = fp.readlines()
>>> all_line
['[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
```
### 4.9. Ввод-вывод объектов с использованием функций из модуля pickle
```py
>>> import pickle
>>> mnoz1={'pen','book','pen','iPhone','table','book'} #Объект типа «множество»
>>> fp=open('zapis6.mnz','wb') # Бинарный файл – на запись
>>> pickle.dump(mnoz1,fp) #dump – метод записи объекта в файл
>>> fp.close()
```
<image src = "Screen3.png">
```py
>>> fp=open('zapis6.mnz','rb')
>>> mnoz2=pickle.load(fp) #load – метод чтения объекта из бинарного файла
>>> fp.close()
>>> mnoz2 == mnoz1
True
>>> mnoz1
{'book', 'table', 'pen', 'iPhone'}
>>> mnoz2
{'table', 'book', 'pen', 'iPhone'}
```
Порядок зависит от внутренней реализации хэш-таблиц.
Хэш - это число фиксированной длины, которое вычисляется из произвольных данных (текста, файла, объекта).
```py
>>> sps3
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
>>> 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', 'table', 'iPhone', 'book'}
>>> obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
```
## 5. Перенаправление потоков ввода и вывода данных
```py
>>> import sys
>>> vr_out=sys.stdout #Запоминаем текущий поток вывода
>>> fc=open('Stroka.txt','w') #Откроем файл вывода
>>> sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл
>>> print('запись строки в файл') #Вывод теперь будет не на экран, а в файл
```
<image src = "Screen4.png">
```py
>>> 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 #Не забыть вернуть стандартное назначение для потока ввода
```

@ -0,0 +1,69 @@
# Общее контрольное задание по ТЕМЕ №6
Криштул Александр, А-03-23
## Задание
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следующие операции.
## Решение
• Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
```py
>>> import random as rn
>>> kort = tuple(str(rn.randint(6,56)) for _ in range(126))
>>> kort
('8', '36', '36', '55', '6', '22', '51', '26', '23', '10', '23', '6', '27', '29', '19', '13', '13', '54', '40', '40', '27', '47', '6', '25', '43', '38', '22', '50', '43', '46', '29', '37', '7', '8', '9', '11', '20', '47', '15', '7', '27', '47', '54', '16', '37', '53', '12', '47', '42', '38', '33', '12', '40', '53', '8', '55', '19', '20', '28', '21', '14', '11', '11', '47', '34', '35', '20', '26', '36', '39', '27', '16', '21', '38', '41', '39', '42', '34', '51', '26', '16', '15', '6', '12', '51', '30', '41', '43', '47', '12', '20', '51', '38', '23', '28', '13', '44', '49', '17', '30', '6', '30', '37', '48', '21', '11', '13', '12', '30', '29', '56', '51', '23', '40', '28', '44', '21', '23', '46', '47', '17', '39', '29', '37', '50', '33')
```
• Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
```py
>>> spis = ['Криштул','Степанищев','Марков','Бережков','Таболин']
```
• Записывается кортеж в бинарный файл.
```py
>>> import pickle
>>> fp=open('task.bn','wb')
>>> pickle.dump(kort,fp)
```
• Записывается в этот же файл список и закрывается файл.
```py
>>> pickle.dump(spis,fp)
>>> fp.close()
```
• Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
```py
>>> fp=open('task.bn','rb')
>>> obj1=pickle.load(fp)
>>> obj2=pickle.load(fp)
>>> fp.close()
```
• Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
```py
>>> if(obj1 == kort and obj2 == spis):
print("Новые объекты совпадают с исходными")
Новые объекты совпадают с исходными
```
• Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
```py
>>> vocab = {}
>>> for i in range(0,len(kort),5):
vocab['группа №'+str(i//5)] = list(kort[i:i+5])
>>> vocab
{'группа №0': ['8', '36', '36', '55', '6'], 'группа №1': ['22', '51', '26', '23', '10'], 'группа №2': ['23', '6', '27', '29', '19'], 'группа №3': ['13', '13', '54', '40', '40'], 'группа №4': ['27', '47', '6', '25', '43'], 'группа №5': ['38', '22', '50', '43', '46'], 'группа №6': ['29', '37', '7', '8', '9'], 'группа №7': ['11', '20', '47', '15', '7'], 'группа №8': ['27', '47', '54', '16', '37'], 'группа №9': ['53', '12', '47', '42', '38'], 'группа №10': ['33', '12', '40', '53', '8'], 'группа №11': ['55', '19', '20', '28', '21'], 'группа №12': ['14', '11', '11', '47', '34'], 'группа №13': ['35', '20', '26', '36', '39'], 'группа №14': ['27', '16', '21', '38', '41'], 'группа №15': ['39', '42', '34', '51', '26'], 'группа №16': ['16', '15', '6', '12', '51'], 'группа №17': ['30', '41', '43', '47', '12'], 'группа №18': ['20', '51', '38', '23', '28'], 'группа №19': ['13', '44', '49', '17', '30'], 'группа №20': ['6', '30', '37', '48', '21'], 'группа №21': ['11', '13', '12', '30', '29'], 'группа №22': ['56', '51', '23', '40', '28'], 'группа №23': ['44', '21', '23', '46', '47'], 'группа №24': ['17', '39', '29', '37', '50'], 'группа №25': ['33']}
```
Загрузка…
Отмена
Сохранить