evgeny 1 месяц назад
Родитель 85ff36ea2a
Сommit c1ed1f0291

@ -0,0 +1,13 @@
a = 1
b= 0
while a<5:
if a % 2 != 0 and a<5:
b+= 1
print(a)
if b == 3:
print("конец")
break
a = a + 2
else: print("fdgdgfdgdfgfdg")

@ -0,0 +1,41 @@
# Вариант 29 Туровец Евгений Юрьевич
## Задание:
```
1) Создайте словарь с 4 элементами. Ключи элементов: Институт, Кафедра, Группа, Студенты. Значения - списки из 3-4 элементов. Например, "Институт":[АВТИ, ИЭЭ, ИРЭ].
2) Запросите у пользователя и введите значение ключа словаря. Проверьте его наличие среди существующих значений ключей. При отсутствии - выдайте сообщение и повторите запрос.
3) Отобразите на экране значения для указанного пользователем ключа по шаблону: "Ключ = <Указанное значение ключа> : Значения = <Список значений ключа>"
4) Запишите словарь в бинарный файл с некоторым именем.
5) Удалите словарь из памяти.
```
Код реализации:
```py
import pickle
data = {
"Институт": ["ИВТИ", "ИЭЭ", "ИРЭ"],
"Кафедра": ["Информатика", "Математика", "Физика"],
"Группа": ["А-02-23", "ПИ-22", "ПИ-23"],
"Студенты": ["Туровец", "Петров", "Сидоров"]
}
while True:
key = input("Введите ключ (Институт, Кафедра, Группа, Студенты): ")
if key in data:
break
print("Такого ключа нет! Попробуйте еще раз.")
print(f"Ключ = {key} : Значения = {data[key]}")
with open("data.bin", "wb") as f:
pickle.dump(data, f)
del data
print("Словарь удален из памяти")
```
Пример вывода:
```
Введите ключ (Институт, Кафедра, Группа, Студенты): авыаыв
Такого ключа нет! Попробуйте еще раз.
Введите ключ (Институт, Кафедра, Группа, Студенты): Студенты
Ключ = Студенты : Значения = ['Туровец', 'Петров', 'Сидоров']
Словарь удален из памяти
```

@ -0,0 +1 @@
запись строки в файл

Двоичные данные
TEMA6/bin.mnz

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

Двоичные данные
TEMA6/data.bin

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

@ -0,0 +1,98 @@
## #Задание:
# Создайте список с 10 элементами - комплексными числами, у которых вещественная и мнимая части - случайные целые числа в диапазоне значений [-10, 30].
# Запросите у пользователя имя текстового файла для вывода.
# Запишите список в этот файл по одному числу на строке.
# Удалите список из памяти
# Прочитайте содержимое файла в новый список
```py
import random
# 1) Создание списка комплексных чисел
complex_list = []
for i in range(10):
real_part = random.randint(-10, 30)
imag_part = random.randint(-10, 30)
complex_num = complex(real_part, imag_part)
complex_list.append(complex_num)
print("Созданный список комплексных чисел:")
for i, num in enumerate(complex_list):
print(f"Элемент {i+1}: {num}")
Элемент 1: (9-2j)
Элемент 2: (13+7j)
Элемент 3: (5+9j)
Элемент 4: (14-7j)
Элемент 5: (30-6j)
Элемент 6: (24+26j)
Элемент 7: (18+24j)
Элемент 8: (13+9j)
Элемент 9: (-7-3j)
Элемент 10: (-3+0j)
# 2) Запрос имени файла
filename = input("Введите имя текстового файла для вывода: ")
# 3) Запись списка в файл
with open(filename, 'w', encoding='utf-8') as file:
for complex_num in complex_list:
file.write(str(complex_num) + '\n')
7
8
7
8
8
9
9
8
8
8
print(f"Список записан в файл: {filename}")
Список записан в файл: iz25.txt
# 4) Удаление списка из памяти
del complex_list
# Проверка удаления
try:
print(complex_list)
except NameError:
print("Список complex_list успешно удален из памяти")
Список complex_list успешно удален из памяти
# 5) Чтение содержимого файла в новый список
new_complex_list = []
with open(filename, 'r', encoding='utf-8') as file:
for line in file:
line = line.strip()
# Преобразование строки обратно в комплексное число
complex_num = complex(line.replace('(','').replace(')',''))
new_complex_list.append(complex_num)
print("\nПрочитанный из файла список комплексных чисел:")
Прочитанный из файла список комплексных чисел:
for i, num in enumerate(new_complex_list):
print(f"Элемент {i+1}: {num}")
Элемент 1: (9-2j)
Элемент 2: (13+7j)
Элемент 3: (5+9j)
Элемент 4: (14-7j)
Элемент 5: (30-6j)
Элемент 6: (24+26j)
Элемент 7: (18+24j)
Элемент 8: (13+9j)
Элемент 9: (-7-3j)
Элемент 10: (-3+0j)
print(f"Всего прочитано {len(new_complex_list)} элементов")
Всего прочитано 10 элементов
```

@ -0,0 +1,111 @@
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
Enter "help" below or click "Help" above for more information.
import random
complex_list = []
for i in range(10):
real_part = random.randint(-10, 30)
imag_part = random.randint(-10, 30)
complex_num = complex(real_part, imag_part)
complex_list.append(complex_num)
print("Созданный список комплексных чисел:")
Созданный список комплексных чисел:
for i, num in enumerate(complex_list):
print(f"Элемент {i+1}: {num}")
Элемент 1: (9-2j)
Элемент 2: (13+7j)
Элемент 3: (5+9j)
Элемент 4: (14-7j)
Элемент 5: (30-6j)
Элемент 6: (24+26j)
Элемент 7: (18+24j)
Элемент 8: (13+9j)
Элемент 9: (-7-3j)
Элемент 10: (-3+0j)
filename = input("Введите имя текстового файла для вывода: ")
Введите имя текстового файла для вывода: iz25.txt
with open(filename, 'w', encoding='utf-8') as file:
for complex_num in complex_list:
file.write(str(complex_num) + '\n')
7
8
7
8
8
9
9
8
8
8
print(f"Список записан в файл: {filename}")
Список записан в файл: iz25.txt
del complex_list
try:
print(complex_list)
except NameError:
print("Список complex_list успешно удален из памяти")
Список complex_list успешно удален из памяти
new_complex_list = []
with open(filename, 'r', encoding='utf-8') as file:
... for line in file:
... line = line.strip()
... # Преобразование строки обратно в комплексное число
... complex_num = complex(line.replace('(', '').replace(')', '').replace('j', ''))
... new_complex_list.append(complex_num)
...
...
Traceback (most recent call last):
File "<pyshell#16>", line 5, in <module>
complex_num = complex(line.replace('(', '').replace(')', '').replace('j', ''))
ValueError: complex() arg is a malformed string
>>> with open(filename, 'r', encoding='utf-8') as file:
... for line in file:
... line = line.strip()
...
...
>>> with open(filename, 'r', encoding='utf-8') as file:
... for line in file:
... line = line.strip()
... # Преобразование строки обратно в комплексное число
... complex_num = complex(line.replace('(', '').replace(')', '').replace('j', ''))
... new_complex_list.append(complex_num)
...
...
Traceback (most recent call last):
File "<pyshell#20>", line 5, in <module>
complex_num = complex(line.replace('(', '').replace(')', '').replace('j', ''))
ValueError: complex() arg is a malformed string
>>> with open(filename, 'r', encoding='utf-8') as file:
... for line in file:
... line = line.strip()
... # Преобразование строки обратно в комплексное число
... complex_num = complex(line.replace('(','').replace(')',''))
... new_complex_list.append(complex_num)
...
...
>>> print("\nПрочитанный из файла список комплексных чисел:")
Прочитанный из файла список комплексных чисел:
>>> for i, num in enumerate(new_complex_list):
... print(f"Элемент {i+1}: {num}")
...
...
Элемент 1: (9-2j)
Элемент 2: (13+7j)
Элемент 3: (5+9j)
Элемент 4: (14-7j)
Элемент 5: (30-6j)
Элемент 6: (24+26j)
Элемент 7: (18+24j)
Элемент 8: (13+9j)
Элемент 9: (-7-3j)
Элемент 10: (-3+0j)
>>> print(f"Всего прочитано {len(new_complex_list)} элементов")
Всего прочитано 10 элементов

@ -0,0 +1,17 @@
import pickle
data = {
"Институт": ["ИВТИ", "ИЭЭ", "ИРЭ"],
"Кафедра": ["Информатика", "Математика", "Физика"],
"Группа": ["А-02-23", "ПИ-22", "ПИ-23"],
"Студенты": ["Туровец", "Петров", "Сидоров"]
}
while True:
key = input("Введите ключ (Институт, Кафедра, Группа, Студенты): ")
if key in data:
break
print("Такого ключа нет! Попробуйте еще раз.")
print(f"Ключ = {key} : Значения = {data[key]}")
with open("data.bin", "wb") as f:
pickle.dump(data, f)
del data
print("Словарь удален из памяти")

@ -0,0 +1,73 @@
# Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
```py
import random
import pickle
import os
# Создаем кортеж
num = list(range(1, 126, 1))
kor = ()
for i in num:
kor = kor + (random.randint(6, 56),)
print('Кортеж = ', kor, '\n')
print('Длина кортежа = ', len(kor))
str_kor = tuple(map(str, kor))
fam = ["Туровец", "Снегура", "Ефремов", "Хатюхин", "Шабатов"]
# Исправленный путь - используем сырую строку или двойные слеши
os.chdir(r'C:\Users\Evgeny\Desktop\python-labs\TEMA6')
# Запись в файл
f = open('bin.mnz', 'wb')
pickle.dump(str_kor, f)
pickle.dump(fam, f)
f.close()
# Чтение из файла
f = open('bin.mnz', 'rb')
obj1 = pickle.load(f)
obj2_spis = pickle.load(f)
print('Первый считанный объект', obj1)
print('Второй считанный объект', obj2_spis)
# Исправлены условия сравнения (добавлено двоеточие)
if obj1 == str_kor:
print('Первый объект совпадает с изначальным символьным кортежем\n')
else:
print('Первый объект НЕ совпадает с изначальным символьным кортежем\n')
if obj2_spis == fam:
print('Второй объект совпадает с изначальным списком\n')
else:
print('Второй объект НЕ совпадает с изначальным списком\n')
# Создание списка списков
List = []
for i in range(0, 125, 5):
List.append(list(str_kor[i:i + 5]))
print('Список списков =', List)
# Создание отдельных переменных для каждого списка
for i in range(25):
list_name = f"list{i + 1}" # Создается имя переменной (list1, list2,..)
globals()[list_name] = List[i]
print('Список 1 = ', list1)
print('Список 2 =', list2)
```
Вывод:
```
Кортеж = (53, 54, 24, 35, 12, 9, 48, 11, 33, 26, 40, 41, 49, 45, 6, 31, 43, 11, 32, 50, 34, 14, 52, 11, 31, 39, 20, 54, 35, 47, 15, 17, 17, 29, 22, 47, 32, 54, 10, 6, 24, 23, 54, 29, 13, 16, 44, 53, 17, 41, 51, 21, 26, 12, 33, 11, 8, 37, 41, 16, 12, 44, 7, 54, 10, 45, 31, 9, 18, 13, 52, 31, 52, 41, 46, 24, 35, 44, 28, 31, 22, 52, 20, 30, 28, 8, 52, 56, 36, 15, 24, 45, 41, 35, 26, 37, 35, 54, 43, 18, 39, 9, 10, 48, 13, 31, 37, 35, 48, 14, 32, 27, 18, 30, 32, 50, 24, 34, 15, 46, 45, 54, 38, 12, 52)
Длина кортежа = 125
Первый считанный объект ('53', '54', '24', '35', '12', '9', '48', '11', '33', '26', '40', '41', '49', '45', '6', '31', '43', '11', '32', '50', '34', '14', '52', '11', '31', '39', '20', '54', '35', '47', '15', '17', '17', '29', '22', '47', '32', '54', '10', '6', '24', '23', '54', '29', '13', '16', '44', '53', '17', '41', '51', '21', '26', '12', '33', '11', '8', '37', '41', '16', '12', '44', '7', '54', '10', '45', '31', '9', '18', '13', '52', '31', '52', '41', '46', '24', '35', '44', '28', '31', '22', '52', '20', '30', '28', '8', '52', '56', '36', '15', '24', '45', '41', '35', '26', '37', '35', '54', '43', '18', '39', '9', '10', '48', '13', '31', '37', '35', '48', '14', '32', '27', '18', '30', '32', '50', '24', '34', '15', '46', '45', '54', '38', '12', '52')
Второй считанный объект ['Туровец', 'Снегура', 'Ефремов', 'Хатюхин', 'Шабатов']
Первый объект совпадает с изначальным символьным кортежем
Второй объект совпадает с изначальным списком
Список списков = [['53', '54', '24', '35', '12'], ['9', '48', '11', '33', '26'], ['40', '41', '49', '45', '6'], ['31', '43', '11', '32', '50'], ['34', '14', '52', '11', '31'], ['39', '20', '54', '35', '47'], ['15', '17', '17', '29', '22'], ['47', '32', '54', '10', '6'], ['24', '23', '54', '29', '13'], ['16', '44', '53', '17', '41'], ['51', '21', '26', '12', '33'], ['11', '8', '37', '41', '16'], ['12', '44', '7', '54', '10'], ['45', '31', '9', '18', '13'], ['52', '31', '52', '41', '46'], ['24', '35', '44', '28', '31'], ['22', '52', '20', '30', '28'], ['8', '52', '56', '36', '15'], ['24', '45', '41', '35', '26'], ['37', '35', '54', '43', '18'], ['39', '9', '10', '48', '13'], ['31', '37', '35', '48', '14'], ['32', '27', '18', '30', '32'], ['50', '24', '34', '15', '46'], ['45', '54', '38', '12', '52']]
Список 1 = ['53', '54', '24', '35', '12']
Список 2 = ['9', '48', '11', '33', '26']
```

@ -0,0 +1,55 @@
import random
import pickle
import os
# Создаем кортеж
num = list(range(1, 126, 1))
kor = ()
for i in num:
kor = kor + (random.randint(6, 56),)
print('Кортеж = ', kor, '\n')
print('Длина кортежа = ', len(kor))
str_kor = tuple(map(str, kor))
fam = ["Туровец", "Снегура", "Ефремов", "Хатюхин", "Шабатов"]
# Исправленный путь - используем сырую строку или двойные слеши
os.chdir(r'C:\Users\Evgeny\Desktop\python-labs\TEMA6')
# Запись в файл
f = open('bin.mnz', 'wb')
pickle.dump(str_kor, f)
pickle.dump(fam, f)
f.close()
# Чтение из файла
f = open('bin.mnz', 'rb')
obj1 = pickle.load(f)
obj2_spis = pickle.load(f)
print('Первый считанный объект', obj1)
print('Второй считанный объект', obj2_spis)
# Исправлены условия сравнения (добавлено двоеточие)
if obj1 == str_kor:
print('Первый объект совпадает с изначальным символьным кортежем\n')
else:
print('Первый объект НЕ совпадает с изначальным символьным кортежем\n')
if obj2_spis == fam:
print('Второй объект совпадает с изначальным списком\n')
else:
print('Второй объект НЕ совпадает с изначальным списком\n')
# Создание списка списков
List = []
for i in range(0, 125, 5):
List.append(list(str_kor[i:i + 5]))
print('Список списков =', List)
# Создание отдельных переменных для каждого списка
for i in range(25):
list_name = f"list{i + 1}" # Создается имя переменной (list1, list2,..)
globals()[list_name] = List[i]
print('Список 1 = ', list1)
print('Список 2 =', list2)

@ -0,0 +1,252 @@
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
Enter "help" below or click "Help" above for more information.
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
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("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк
import sys
sys.stdout.write('Функция write')
Функция write13
sys.stdout.write('Функция write\n')
Функция write
14
psw=input('Введите пароль:')
Введите пароль:12g
psw
'12g'
while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 17.5
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
os.getcwd()
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
os.getcwd()
NameError: name 'os' is not defined. Did you forget to import 'os'?
import 'os'
SyntaxError: invalid syntax
import os
os.getcwd()
'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313'
os.chdir('C:\Users\User-PC\python-labs\TEMA6')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
os.chdir('C:/Users/User-PC/python-labs/TEMA6')
os.getcwd()
'C:\\Users\\User-PC\\python-labs\\TEMA6'
snegura = str(os.getcwd())
snegura
'C:\\Users\\User-PC\\python-labs\\TEMA6'
os.chdir('C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313')
snegura = str(os.getcwd())
snegura
'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313'
os.chdir('C:/Users/User-PC/python-labs/TEMA6')
os.mkdir("папка новая")
os.rmdir("папка новая")
os.mkdir("папка новая")
os.rmdir("папка новая")
os.listdir()
['.gitkeep', 'repor.py', 'report.md', 'report.py', '{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png']
os.path.isdir("папка новая")
False
os.path.isdir("report.md")
False
fil=os.path.abspath("report.md")
fil
'C:\\Users\\User-PC\\python-labs\\TEMA6\\report.md'
drkt=os.path.dirname(fil)
drkt
'C:\\Users\\User-PC\\python-labs\\TEMA6'
name = os.path.basename(fil)
name
'report.md'
head, tail = os.path.split(fil)
head
'C:\\Users\\User-PC\\python-labs\\TEMA6'
tail
'report.md'
os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA6')
True
os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA60')
False
os.path.isfile(fil)
True
open
<built-in function open>
help(open)
fp=open(file=drkt+'\\zapis1.txt',mode='w')
fp=open(drkt+'\\zapis1.txt','w')
fp=open('zapis1.txt','w')
type(fp)
<class '_io.TextIOWrapper'>
fp1=open(drkt+'\\zapis2.bin',mode='wb+')
fp.close()
fp1.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()
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')
gh.close()
SyntaxError: multiple statements found while compiling a single statement
gh=open('zapis5.txt','w')
for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
gh.close()
SyntaxError: invalid syntax
for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
gh.close()
gh=open('zapis6.txt','w')
for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
gh.close()
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()
sps
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sps1
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
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'
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()
mnoz1
{'pen', 'book', 'iPhone', 'table'}
mnoz2
{'pen', 'book', 'iPhone', 'table'}
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', 'book', 'iPhone', 'table'}
obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
mnoz1
{'pen', 'book', 'iPhone', 'table'}
sps3
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
import sys
vr_out=sys.stdout #Запоминаем текущий поток вывода
fc=open('Stroka.txt','w') #Откроем файл вывода
sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл
print('запись строки в файл') #Вывод теперь будет не на экран, а в файл
sys.stdout=vr_out #Восстановление текущего потока
print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился
SyntaxError: unexpected indent
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()
...
SyntaxError: unexpected indent
>>> fd.close()
>>> sys.stdin=tmp_in #Не забыть вернуть стандартное назначение для потока ввода

@ -0,0 +1,438 @@
# Отчет по теме 6
## 1 Запуск интерактивной оболочки IDLE
Была запущена интерактивная оболочка IDLE.
## 2 Изучение вывода данных на экран дисплея
Были изучены и применены различные способы вывода данных на экран.
## 2.1 Изучение эхо-вывода
```py
>>>stroka='Автоматизированная система управления'
>>>stroka
'Автоматизированная система управления'
```
## 2.2 Изучение вывода данных с помощью печати
Была изучена функция print для вывода текста. Текст был выведен в одну строку, далее в две строки с использованием экранированных последовательностей, далее был выведен текст с дописанным в конце текстом, используя аргумент end. И также был выведен текст в три строки, используя троиные кавычки.
```py
>>>fff=234.5;gg='Значение температуры = '
>>>print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции
Значение температуры = 234.5
>>>print(gg, fff, sep="\n")
Значение температуры =
234.5
>>>print(gg, fff,sep='\n',end='***'); print('____')
Значение температуры =
234.5***____
>>>print()
>>>print(""" Здесь может выводиться
большой текст,
занимающий несколько строк""") #В этом варианте текст выводится в три отдельные строки как и при вводе команды, благодаря троиным кавычкам.
Здесь может выводиться
большой текст,
занимающий несколько строк
>>>print("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк") #В данном случае текст выводится подряд в одну строку.
Здесь может выводиться большой текст, занимающий несколько строк
```
## 2.3 Изучение вывода данных с помощью функции write
Был испортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку.
```
>>>import sys
>>>sys.stdout.write('Функция write')
Функция write13
>>>sys.stdout.write('Функция write')
Функция write13
>>>sys.stdout.write('Функция write\n')
Функция write
14
```
## 3 Изучение ввода данных с клавиатуры
С помощью функции input был произведен вывод текста, введенного с клавиатуры. Так же был создан цикл, который просит пользователя ввести значение до тех пор, пока оно не будет удовлетворять определенному интервалу, а потом выводит это значение на дисплей. Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователен с консоли исполняется, и выдается результат расчета.
```py
>>>psw=input('Введите пароль:')
Введите пароль:12g
>>>psw
'12g'
>>>type(psw)
<class 'str'>
```
Ввод с контролем значения. Пусть вводится число, которое должно находиться в интервале значе-ний от 17.5 до 23.8.
```py
>>>while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 15.4
Ошибка!
Задайте коэф.усиления = 21.6
```
Ввод и обработка выражения, подлежащего расчету.
```py
>>>import math
>>>print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## 4 Изучение различных способов чтения данных из файла и записи в файл
Были изучены и применены разные способы чтения и записи данных.
## 4.1 Изучение модуля os для работы с путями к файлам
Был просмотрен текущий рабочий каталог, занесен в переменную d. После этого совершен переход в другой рабочий католог. Были самостоятельно изучены и применены методы из модуля os и подмодуля os.path:
mkdir - создает папку в рабочем каталоге (в приложенном фото видно, что в каталоге появилвсь папка);
![alt text]({2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png)
rmdir - удаляет из каталога пустую папку;
listdir - возвращает список имен файлов/папок в указанном каталоге (или если аргумент не указан, то в текущем каталоге);
path.isdir - возвращает true, если папка является существующей в каталоге.
Далее была создана переменная, содержащая строку - путь в файлу report и имя данного файла. Используя эту переменную, с помощью функций модуля os была создана строка содержащая только путь, потом только имя, а потом применена функция, которая разделяет в одну переменную - путь, в другую - имя файла. Далее было проверено существование определенного пути, и существование определенного файла с указаном каталоге.
```py
>>>import os
>>>os.getcwd()
'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313'
>>>turovets = str(os.getcwd())
>>turovets
'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313'
>>>os.chdir('C:/Users/User-PC/python-labs/TEMA6')
>>>os.mkdir("папка новая")
>>>os.rmdir("папка новая")
>>>os.listdir()
['.gitkeep', 'repor.py', 'report.md', 'report.py', '{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png']
>>>os.path.isdir("папка новая")
False
>>>fil=os.path.abspath("report.md")
>>>fil
'C:\\Users\\User-PC\\python-labs\\TEMA6\\report.md'
>>>drkt=os.path.dirname(fil)
>>>drkt
'C:\\Users\\User-PC\\python-labs\\TEMA6'
>>>name = os.path.basename(fil)
>>>name
'report.md'
>>>head, tail = os.path.split(fil)
>>>head
'C:\\Users\\User-PC\\python-labs\\TEMA6'
>>>tail
'report.md'
>>>os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA6')
True
>>>os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA60')
False
>>>os.path.isfile(fil)
True
```
## 4.2 Изучение обобщенного процесса работы с файлами
Было определено, что для обмена данными с файлами необходимо:
• Открыть файла с указанием его имени и цели;
• Выполнить операции обмена данными с файлом;
• Закрыть файл.
## 4.3 Изучение функции open для открытия файлов с разной целью
Была применена команда open с различным написанием аргументов, создан файловый обьект. Выведен тип и список атрибутов этого обьекта.
```py
>>>fp=open(file=drkt+'\\zapis1.txt',mode='w')
>>>fp=open(drkt+'\\zapis1.txt','w') #если имя файла располагается на месте первого аргумента, а цель использования – на втором, то имена аргументов можно не указывать
>>>fp=open('zapis1.txt','w') #путь в переменной drkt совпадает с рабочим каталогом, значит его можно опустить, оставив только имя открываемого файла
>>>type(fp)
<class '_io.TextIOWrapper'>
>>>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+')
```
## 4.4 Изучение закрытия файла
Файл был закрыт.
```py
>>>fp.close()
>>>fp1.close()
```
## 4.5 Изучение функции write для записи данных в текст
Был создан список из 12 элементов и поочередно в файл записаны числа из списка в три строки.
```py
>>>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()
```
![alt text]({BDBC12A7-03FA-405C-B54E-67BB26CD9BB4}.png)
Далее был создан список из трех списков и с помощью цикла for все элементы списка были вписаны в файл в одну строку.
```py
>>>sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
>>>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()
```
Вывод:
```
Иванов И. 1Петров П. 2Сидоров С. 3
```
Далее с помощью цикла for три списка из общего списка были вписаны в файл поочередно в три строки. Запись цикла была сжата в одну строку, и проверено, что при написании той же инструкции в одну строку, содержимое файла не изменяется, относительно предыдущего метода с этими же инструкциями.
```py
>>>gh=open('zapis5.txt','w')
>>>for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
>>>gh.close()
```
Вывод:
```
Иванов И. 1
Петров П. 2
Сидоров С. 3
```
```py
>>>gh=open('zapis6.txt','w')
>>>for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
>>>gh.close()
```
Вывод:
```
Иванов И. 1
Петров П. 2
Сидоров С. 3
```
## 4.6 Изучение одного из способов чтения данных из файла с помощью цикла for
С помощью open был открыт файл для чтения, и из его символов был сконструирован список, состоящий из символов. После символы в списке были преобразованы в числа, и список стал идентичен тому, который создавался ранее и записывался в файл.
```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()
>>>sps
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>>sps1
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
>>>sps2=[]
>>>for i in sps1:
sps2.append(int(i))
>>>sps2
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
```
## 4.7 Изучение способа чтения данных из файла с помощью функции read
Был открыт текстовый файл и с помощью функции read из него сначала было прочитано и отображено 12 символов, а потом прочитаны остальные символы с помощью функции 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('zapis3.txt')
>>>s1 = fp.readline()
>>>s2=fp.readline()
>>>s1
'[1, 2, 3, 4]\n'
>>>s2
'[5, 6, 7, 8]\n'
>>>fp.close()
>>>fp=open('zapis3.txt')
>>>s3 = fp.readlines()
>>>s3
['[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) #dump – метод записи объекта в файл
>>>fp.close()
```
```py
>>>fp=open('zapis6.mnz','rb')
>>>mnoz2=pickle.load(fp) #load – метод чтения объекта из бинарного файла
>>>fp.close()
>>>mnoz2 #Результат не такой как при вводе множества mnoz1, так как множество не имеет повторений и порядка элементов, поэтому автоматически множество обьединило повторяющиеся слова.
{'pen', 'iPhone', 'book', 'table'}
mnoz1 == mnoz2
True
```
Также в файл было записано два обьекта и прочитано поочередно с помощью load.
```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
{'pen', 'iPhone', 'book', 'table'}
>>>mnoz1
{'pen', 'book', 'iPhone', 'table'}
>>>obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
>>>sps3
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
```
## 5 Перенаправление потоков ввода и вывода данных.
Был создан текстовый файл, куда с помощью модуля sys и методы stdout был перенаправлен поток вывода, и в нем был напечатан текст. Далее поток вывода был перенаправлен обратно и проведена проверка с помощью print.
```py
>>>import sys
>>>vr_out=sys.stdout #Запоминаем текущий поток вывода
>>>fc=open('Stroka.txt','w') #Откроем файл вывода
>>>sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл
>>>print('запись строки в файл') #Вывод теперь будет не на экран, а в файл
>>>sys.stdout=vr_out #Восстановление текущего потока
>>>print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился
запись строки на экран
>>>fc.close()
```
Также был перенаправлен ввод на файл, и реализован цикл, в котором считывается текст из файла и печатается на экран.
```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
Был завершен сеанс в среде IDLE.

@ -0,0 +1,3 @@
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]

@ -0,0 +1 @@
Иванов И. 1Петров П. 2Сидоров С. 3

@ -0,0 +1,3 @@
Иванов И. 1
Петров П. 2
Сидоров С. 3

Двоичные данные
TEMA6/zapis6.mnz

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

@ -0,0 +1,3 @@
Иванов И. 1
Петров П. 2
Сидоров С. 3

Двоичные данные
TEMA6/zapis7.2ob

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

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

После

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

Загрузка…
Отмена
Сохранить