no name 4 недель назад
Родитель 00a85e2f17
Сommit b19195609b

@ -9,11 +9,10 @@
>>>stroka
'Автоматизированная система управления'
```
Этот способ называется «эхо-выводом». Он пригоден при работе в командной строке, однако в пользовательских функциях, которые будут изучаться дальше, этот способ применять нельзя
Этот способ называется «эхо-выводом». Пригоден при работе в командной строке, однако в пользовательских функциях этот способ применять нельзя.
### 2.2. Вывод с использованием функции print.
Вывод объектов на экран:
```python
>>>fff = 234.5; gg = 'Значение температуры='
>>>print(gg, fff) # Можно вывести несколько объектов за одно обращение к функции
@ -29,7 +28,7 @@
>>>print()
```
Для большого текста оператор вывода может располагаться на нескольких строках с использованием тройных кавычек:
Оператор вывода может располагаться на нескольких строках с использованием тройных кавычек:
```python
>>>print(""" Здесь может выводиться
большой текст,
@ -46,24 +45,25 @@
"занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк
```
Разница воспроизведения текста на экран видна. В первом случае текст воспринимается как один объект, поэтому имеем соответствующий вывод. Во втором случае наблюдаем работу обычного вывода print() с разделением объектов через пробелы.
В первом случае тройные кавычки воспроизводят текст ровно так, как он был введен. Во втором случае три выводимых объекта-строки перечислены через запятую и выведены как три объекта, разделённые пробелом.
### 2.3. Вывод с использованием метода write объекта sys.stdout.
### 2.3. Вывод с использованием метода write объекта sys.stdout.
Объект stdout представляет собой поток стандартного вывода – объект, в который программы выводят символьное представление данных.
```python
>>>import sys
>>>sys.stdout.write('Функция write')
Функция write13
```
Обратим внимание, что этот метод после вывода строки не осуществляет переход на новую строку. Если это требуется, то следует в конце строки добавить один или несколько символов “\n”:
Этот метод после вывода строки не осуществляет переход на новую строку. Если это требуется, то следует в конце строки добавить один или несколько символов “\n”:
```python
>>>sys.stdout.write('Функция write\n')
Функция write
14
```
Как видим, в этом методе, в обоих случаях, выводится количество введенных символов.
В этом контексте 14 — это не результат вычисления, а возвращаемое значение функции write в интерактивной консоли, показывающее, сколько символов она успешно вывела.
Эта функция возвращает число - количество введенных символов (\n считается за один символ)
## 3. Ввод данных с клавиатуры.
Используем стандартную функцию input:
```python
>>>psw = input('Введите пароль:')
Введите пароль:123rkn567
@ -72,8 +72,9 @@
>>>type(psw)
<class 'str'>
```
- Пример 1:
input() всегда возвращает строку. Если нужна не строка, то input надо поместить внутрь функции, изменяющей тип данных. Например, int(input()).
- Пример 1
Пусть вводится число, которое должно находиться в интервале значений от 17.5 до 23.8
```python
>>>while True:
znach=float(input('Задайте коэф.усиления = '))
@ -87,16 +88,18 @@
```
- Пример 2:
Ввод и обработка выражения, подлежащего расчету
```python
>>>import math
>>>print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
Введенная через input() строка передается в функцию eval(), которая вычисляет выражение, записанное в этой строке, как код Python. Результат вычисления (возвращаемое значение eval()) передается в функцию print(), которая выводит его на экран.
Введенная строка преобразуется в исполнительные инструкции с помощью eval(), далее они выполняются и результат выводится на экран.
## 4. Ввод-вывод при работе с файлами.
### 4.1. Функции для работы с путем к файлу.
Эти функции собраны в модуле os. Текущий рабочий каталог можно узнать с помощью функции os.getcwd:
```python
>>>import os
>>>os.getcwd()
@ -288,7 +291,7 @@ False
a – запись в конец существующего файла или, если его нет, запись с созданием файла,
a+ - то же, что и в «a», но с возможностью чтения из файла.
В зависимости от значения этого аргумента тип создаваемой файловой переменной может быть разным.
При открытии бинарного файла к указанным выше буквам надо добавить символ «b»
Пример открытия бинарного файла:
```python
>>>fp1 = open(drkt+'\\zapis2.bin', mode = 'wb+')
@ -381,7 +384,7 @@ print(sps1)
>>>sps2
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
```
.strip - убирает пробелы с двух сторон.
Выше - т.н. list comprehension, который у каждого элемента sps1 убирает лишние пробелы с обеих сторон (в этом отличие rstrip от strip).
### 4.7. Чтение информации из файла с помощью метода read.
@ -404,8 +407,8 @@ print(sps1)
>>>file = open("zapis5.txt")
>>>file.readline()
'Иванов И. 1\n'
>>>file.seek(0)# Вовзращение указателя обратно в начало, чтобы нагляднее выполнить readlines
0
>>>file.close()
>>>file = open("zapis5.txt")
>>>file.readlines()
['Иванов И. 1\n', 'Петров П. 2\n', 'Сидоров С. 3\n']
```
@ -421,7 +424,8 @@ print(sps1)
```
Запись, произведенная в файл:
耄锣 鐨谅瑡扬斔谄扯潫钌٩偨潮斔调灥溔逮 (Эти символы - это результат попытки прочитать бинарные данные как текст)
耄锣 鐨谅瑡扬斔谄扯潫钌٩偨潮斔调灥溔逮
Байты в этом файле не предназначены для текстового представления. Они могут содержать символы, которые не могут быть корректно интерпретированы в рамках текстовой кодировки.
Теперь прочитаем данные из файла в объект mnoz2:
```python
@ -435,8 +439,7 @@ print(sps1)
>>>mnoz1 == mnoz2
True
```
mnoz1 не совпадает с тем, что было задано, так как множество исключает повторяющиеся элементы, оставляя только один.
mnoz1 не совпадает с изначально заданным mnoz1, потому что данный тип объекта исключает повторяющиеся элементы.
С использованием тех же функций запишем в файл, а затем прочитаем два объекта разных типов: то же множество mnoz1 и ранее созданный список sps3. При считывании объекты извлекаются из файла в той же последовательности, в которой они в него записывались.
```python
@ -459,6 +462,9 @@ True
```
## 5. Перенаправление потоков ввода и вывода данных.
sys.stdin — поток ввода
sys.stdout — поток вывода
sys.stderr — поток ошибок
```python
>>>import sys
>>>vr_out = sys.stdout #Запоминаем текущий поток вывода
@ -475,10 +481,10 @@ True
Точно также можно перенаправить поток ввода – sys.stdin – вместо клавиатуры – из файла.
```python
>>> tmp_in = sys.stdin
>>> fd = open("Stroka.txt", "r")
>>> tmp_in = sys.stdin #Запоминание текущего потока ввода
>>> fd = open("Stroka.txt", "r") #Открытие файла для ввода (чтения)
>>> sys.stdin = fd #Перенацеливаем ввод на файл вместо клавиатуры
>>> sys.stdin
>>> sys.stdin
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'>
>>> while True:
try:
@ -488,7 +494,7 @@ True
break
запись строки в файл
>>> fd.close()
>>> sys.stdin = tmp_in #Не забыть вернуть стандартное назначение для потока ввода
>>> sys.stdin = tmp_in #Возвращение стандартного назначения для потока ввода
```
Ошибка "EOFError: EOF when reading a line" возникает, когда программа ожидает чтения строки из входного потока, но вместо этого достигает конца файла (EOF), что означает, что необходимые данные отсутствуют.
## 6. Завершение сеанса в среде IDLE

@ -0,0 +1,77 @@
Жалнин Вадим, А-01-23
## Задание
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следующие операции:
1. Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
2. Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
3. Записывается кортеж в бинарный файл.
4. Записывается в этот же файл список и закрывается файл.
5. Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
6. Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
7. Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
## Выполнение
1. Создание кортежа
```python
>>> #1
>>>
>>> import random
>>> kort = tuple([str(random.randint(6, 56)) for i in range(125)])
>>> kort
('12', '34', '27', '28', '19', '38', '47', '26', '43', '32', '50', '22', '18', '15', '41', '37', '21', '37', '41', '26', '33', '55', '41', '19', '23', '11', '39', '10', '50', '56', '14', '14', '14', '43', '38', '7', '52', '24', '6', '18', '12', '31', '48', '16', '41', '19', '47', '42', '31', '20', '50', '53', '7', '41', '20', '10', '46', '44', '50', '12', '40', '13', '33', '26', '37', '55', '41', '16', '29', '36', '12', '34', '49', '31', '45', '34', '40', '54', '51', '6', '22', '53', '30', '16', '12', '46', '38', '8', '48', '47', '21', '34', '30', '54', '9', '49', '7', '12', '39', '44', '27', '50', '31', '36', '20', '24', '43', '36', '46', '37', '9', '42', '32', '8', '25', '19', '13', '39', '30', '22', '19', '20', '16', '23', '37')
>>> len(kort)
125
>>>
>>> #2
>>>
>>> lastnames = ["Zhalnin", "Khokhlov", "Troyanov", "Zheleznov", "Knyazev"]
>>>
>>> #3
>>>
>>> import os, pickle
>>> os.chdir("C:\\Users\\twoth\\Desktop\\python-labs\\TEMA6")
>>> fp = open("binary.bin", "wb")
>>> pickle.dump(kort, fp)
>>>
>>> #4
>>>
>>> pickle.dump(lastnames, fp)
>>> fp.close()
>>>
>>> #5
>>>
>>> fp = open("binary.bin", "rb")
>>> newKort = pickle.load(fp)
>>> newList = pickle.load(fp)
>>> newKort
('12', '34', '27', '28', '19', '38', '47', '26', '43', '32', '50', '22', '18', '15', '41', '37', '21', '37', '41', '26', '33', '55', '41', '19', '23', '11', '39', '10', '50', '56', '14', '14', '14', '43', '38', '7', '52', '24', '6', '18', '12', '31', '48', '16', '41', '19', '47', '42', '31', '20', '50', '53', '7', '41', '20', '10', '46', '44', '50', '12', '40', '13', '33', '26', '37', '55', '41', '16', '29', '36', '12', '34', '49', '31', '45', '34', '40', '54', '51', '6', '22', '53', '30', '16', '12', '46', '38', '8', '48', '47', '21', '34', '30', '54', '9', '49', '7', '12', '39', '44', '27', '50', '31', '36', '20', '24', '43', '36', '46', '37', '9', '42', '32', '8', '25', '19', '13', '39', '30', '22', '19', '20', '16', '23', '37')
>>> newList
["Zhalnin", "Khokhlov", "Troyanov", "Zheleznov", "Knyazev"]
>>> fp.close()
>>>
>>> #6
>>>
>>> if (newKort == kort): print("Кортежи совпадают")
>>> else: print("Кортежи не совпадают")
Кортежи совпадают
>>> if (newList == lastnames): print("Списки совпадают")
>>> else: print("Списки не совпадают")
Списки совпадают
>>>
>>> #7
>>>
>>> for i in range(0,125,5):
exec('list' + str(i//5+1) + ' = ' + str(list(kort[i:i+5])))
>>> list1
['12', '34', '27', '28', '19']
>>> list2
['38', '47', '26', '43', '32']
>>> list25
['19', '20', '16', '23', '37']
```
Загрузка…
Отмена
Сохранить