Сравнить коммиты

..

Ничего общего в коммитах. 'd41439bbe4b93f5b27fd7ebcd06751f608385b0b' и 'b0ab294a09e09312ccbbe925a7152b242608393f' имеют совершенно разные истории.

@ -1,474 +0,0 @@
# Отчет по Теме 6
Похил Анастасия, А-02-23
## 1. Запущена интерактивная оболочка IDLE.
## 2. Вывод данных на экран дисплея.
### 2.1. Вывод в командной строке
"Эхо-вывод"
```py
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
```
### 2.2. Вывод с использованием функции print
Пример вывода:
```py
fff=234.5;gg='Значение температуры = '
print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции
Значение температуры = 234.5
```
По умолчанию выводимые объекты разделяются одним пробелом. Если нужен другой разделитель его можно указать в отдельном аргументе sep:
```py
fff=234.5;gg='Значение температуры = '
print(gg, fff, sep='/')
Значение температуры = /234.5
```
Если курсор надо оставить в той же строке, то следует использовать еще один аргумент. После end= надо указать какими символами должна закончиться выводимая строка или указать пустую строку.
```py
print(gg, fff,sep='/',end='***'); print('____')
Значение температуры = /234.5***____
```
Наконец, оператор вывода может располагаться на нескольких строках с использованием тройных кавычек.
```py
print(""" Здесь может выводиться
большой текст,
занимающий несколько строк""")
Здесь может выводиться
большой текст,
занимающий несколько строк
print("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк
```
Тройные кавычки сохраняют переносы строк, выводя текст в несколько строк, а несколько аргументов в print() разделяются пробелами и выводятся в одну строку.
### 2.3. Вывод с использованием метода write объекта sys.stdout.
Объект stdout представляет собой поток стандартного вывода – объект, в который программы вы-водят символьное представление данных.
```py
import sys
sys.stdout.write('Функция write')
Функция write13
sys.stdout.write('Функция write\n')
Функция write
14
```
Этот метод после вывода строки не осуществляет переход на новую строку. Если это требуется, то следует в конце строки добавить один или несколько символов “\n”. Функция write() возвращает число — количество успешно записанных символов.
## 3. Ввод данных с клавиатуры
Для ввода с клавиатуры используется функция input. Полученный объект имеет строковый тип данных.
```py
psw=input('Введите пароль:')
Введите пароль:12345
psw
'12345'
type(psw)
<class 'str'>
```
Пример 1. Ввод с контролем значения.
```py
while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 15.4
Ошибка!
Задайте коэф.усиления = 21.6
```
Пример 2. Ввод и обработка выражения.
```py
import math
print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## 4. Ввод-вывод при работе с файлами.
### 4.1 Функции для работы с путем к файлу.
Используя функцию os.getcwd(), можно получить путь к текущему рабочему каталогу.
При обычном эхо-выводе отображаются двойные обратные слэши, при использовании print() - одинарные.
```py
import os
os.getcwd()
'C:\\Users\\Настя\\AppData\\Local\\Programs\\Python\\Python313'
Pohil=os.getcwd(); print(Pohil)
C:\Users\Настя\AppData\Local\Programs\Python\Python313
```
Была использована функция os.chdir() для смены рабочего каталога.
```py
os.chdir('C:\\Users\\Настя\\Desktop\\python-labs\\TEMA6')
os.getcwd()
'C:\\Users\\Настя\\Desktop\\python-labs\\TEMA6'
```
Функция os.mkdir() создаёт новый каталог.
```py
os.mkdir('katalog1')
os.chdir('katalog1')
os.getcwd()
'C:\\Users\\Настя\\Desktop\\python-labs\\TEMA6\\katalog1'
```
Функция os.listdir() возвращает список каталогов и файлов, находящихся внутри данного каталога.
```py
os.chdir('../')
os.listdir()
['.gitkeep', '123.py', 'katalog1', 'report.md']
```
Удаление каталога через os.rmdir().
```py
os.rmdir('katalog1')
os.listdir()
['.gitkeep', '123.py', 'report.md']
```
os.path.isdir() позволяет проверить наличие каталога. Для несуществующих каталогов, ровно как и для любых файлов, которые не являются в свою очередь каталогами - возвращает False.
```py
os.path.isdir('report.md')
False
os.chdir('../')
os.path.isdir('TEMA6')
True
```
Был получен путь до файла, имя которого передаётся в качестве аргумента в os.path.abspath(). Затем из абсолютного пути был извлечен путь до каталога, в котором находится файл, затем имя самого файла, после чего был получен кортеж с путём до каталога и именем файла, находящегося внутри него.
```py
fil=os.path.abspath('report.md'); print(fil)
C:\Users\Настя\Desktop\python-labs\report.md
fil = os.path.abspath("oplata.dbf")
drkt=os.path.dirname(fil); print(drkt)
C:\Users\Настя\Desktop\python-labs
bsn=os.path.basename(fil); print(bsn)
oplata.dbf
os.path.split(fil)
('C:\\Users\\Настя\\Desktop\\python-labs', 'oplata.dbf')
```
Проверено наличие файла с известным расположением с помощью функции os.path.exists. Возвращаемое значение: True или False.
```py
os.path.exists(fil)
True
fil1=drkt+'\\katalog1'; print(fil1)
C:\Users\Настя\Desktop\python-labs\TEMA6\katalog1
os.path.exists(fil1)
False
```
Проверка на наличие файла с известным расположением.
```
os.path.isfile(fil)
True
os.path.isfile(os.path.dirname(fil)+'fil1.txt')
False
```
dirname() возвращает путь, то os.path.basename() возвращает имя файла
### 4.2. Общая схема работы с файлом
Для обмена данными с файлом необходимо выполнить следующие операции:
1. Открытие файла с указанием его имени и цели (чтение, запись, добавление данных);
2. Выполнение одной или нескольких операций обмена данными с файлом;
3. Закрытие файла.
### 4.3. Открытие файла для записи или чтения данных – функция open
Был создан файловый объект fp класса _io.TextIOWrapper для работы с текстовыми данными.
В аргументе функции с именем file указывается путь и имя открываемого файла, а в аргументе с именем mode – предполагаемая цель его использования.
Файл по такой инструкции открывается только для записи в файл. Если требуются другие операции с открываемым файлом, то для второго аргумента mode могут быть заданы следующие значения:
w – запись с созданием нового файла или перезапись существующего файла,
w+ - чтение и запись/перезапись файла,
r – только чтение (это значение - по умолчанию),
r+ - чтение и/или запись в существующий файл,
a – запись в конец существующего файла или, если его нет, запись с созданием файла,
a+ - то же, но с возможностью чтения из файла.
```py
fp=open(file=drkt+'\\zapis1.txt',mode='w')
type(fp); dir(fp)
<class '_io.TextIOWrapper'>
['_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']
```
Вообще говоря, аргументы функции при указании их имен могут располагаться в любом порядке.
Если же имя файла располагается на месте первого аргумента, а цель использования – на втором, то имена аргументов можно не указывать, а вводить в соответствующем порядке.
Также если путь в переменной drkt совпадает с рабочим каталогом, то его можно опустить, оставив только имя открываемого файла.
```py
fp=open(drkt+'\\zapis1.txt','w')
fp=open('zapis1.txt','w')
```
Создаваемые и читаемые файлы могут быть бинарными или символьными. При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить символ b.
```
fp1=open(drkt+'\\zapis2.bin',mode='wb+')
```
### 4.4. Закрытие файла.
Сразу после завершения работы с файлом его следует закрыть для обеспечения сохранности его содержимого.
```py
fp.close()
```
### 4.5. Запись информации в файл с помощью метода write
Метод 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
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
```
Пример со списком, содержащим внутри себя списки. Первая попытка:
```
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()
```
Содержимое файла zapis4.txt:
```py
Иванов И. 1Петров П. 2Сидоров С. 3
```
Добавляем '\n':
```py
gh=open('zapis5.txt','w')
for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
gh.close()
```
Новое одержимое файла zapis4.txt:
```py
Иванов И. 1
Петров П. 2
Сидоров С. 3
```
С представлением цикла в одной строке:
```py
gh=open('zapis5.txt','w')
for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
gh.close()
```
```py
Иванов И. 1
Петров П. 2
Сидоров С. 3
```
### 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']
sps
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
```
Полученный при чтении файла список sps1 содержит элементы строкового типа (необходим целочисленный, как в sps). Преобразуем элементы списка:
```py
sps3=list(map(int, sps1))
sps3
[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; stroka2
'[1, 2, 3, 4]'
'\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.readlines()
fp.close()
s1; s2
'[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)
fp.close()
```
Содержимое файла zapis6.mnz:
```py
Ђ•# Џ”(Њpen”Њtable”Њbook”ЊiPhone”ђ.
```
При прочтении данных из файла было получено то же самое множество, что и созданное ранее.
```py
fp=open('zapis6.mnz','rb')
mnoz2=pickle.load(fp)
fp.close()
mnoz2
{'book', 'table', 'pen', 'iPhone'}
mnoz1 == mnoz2
True
```
При считывании объекты извлекаются из файла в той же последовательности, в которой они в него записывались.
```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()
obj1; obj2
{'book', 'table', 'pen', 'iPhone'}
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
obj1 == mnoz1; obj2 == sps3
True
True
```
## 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
запись строки в файл
```
Подобным образом можно перенаправить и поток ввода.
```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.

@ -1,63 +0,0 @@
# Общее контрольное задание по теме 6
Похил Анастасия, А-02-23
## Задание
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следующие операции:
1. Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
2. Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
3. Записывается кортеж в бинарный файл.
4. Записывается в этот же файл список и закрывается файл.
5. Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
6. Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
7. Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
## Выполнение
1. Создание кортежа
```py
import random
tup1=[]
for i in range(125): tup1.append(str(random.randint(6, 56)))
tup1=tuple(tup1); tup1
('46', '21', '28', '45', '35', '15', '42', '20', '20', '31', '32', '23', '25', '56', '16', '42', '11', '44', '15', '7', '41', '27', '27', '54', '51', '15', '20', '48', '52', '15', '38', '17', '19', '56', '22', '33', '16', '53', '19', '11', '31', '10', '7', '6', '15', '16', '20', '28', '44', '26', '24', '51', '16', '17', '38', '31', '28', '26', '25', '43', '16', '23', '34', '48', '33', '53', '26', '33', '38', '29', '8', '36', '49', '53', '49', '13', '51', '13', '49', '46', '35', '13', '12', '48', '25', '56', '50', '30', '6', '56', '9', '11', '16', '38', '33', '7', '16', '10', '47', '32', '43', '38', '10', '7', '12', '35', '22', '35', '12', '39', '15', '32', '27', '42', '52', '20', '51', '10', '22', '49', '26', '6', '12', '49', '22')
```
2-4. Создание списка, запись кортежа и списка в бинарный файл, чтение обоих объектов из файла
```py
sps1=['Похил', 'Сарайкина', 'Цветкова', 'Шинкаренко', 'Снегура']
import pickle
fp=open('fil.mnz', 'wb')
pickle.dump(tup1, fp)
pickle.dump(sps1, fp)
fp.close()
fp=open('fil.mnz', 'rb')
tup2=pickle.load(fp)
sps2=pickle.load(fp)
fp.close()
```
5. Проверка на совпадение объектов
```py
print('Кортежи совпадают') if tup1 == tup2 else print('Кортежи не совпадают')
Кортежи совпадают
print('Списки совпадают') if sps1 == sps2 else print('Списки не совпадают')
Списки совпадают
```
6. Разделение кортежа на списки по 5 чисел, представленных в строковом виде.
```py
for i in range(0, len(tup1), 5):
exec('spisk' + str(i//5+1) + '=' + str(list(tup1[i:i+5])))
spisk1
['46', '21', '28', '45', '35']
spisk2
['15', '42', '20', '20', '31']
spisk3
['32', '23', '25', '56', '16']
```
Загрузка…
Отмена
Сохранить