Этот коммит содержится в:
no name
2025-11-24 10:14:07 +03:00
родитель 00a85e2f17
Коммит b19195609b
2 изменённых файлов: 107 добавлений и 24 удалений

Просмотреть файл

@@ -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