СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Методический материал "Поток ввода на языке программирования Python"

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Методический материал "Поток ввода на языке программирования Python"»

МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ

«ЦЕНТР ДЕТСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА»

















Методическая разработка

«Поток ввода на языке

программирования Python»

к дополнительной общеобразовательной

общеразвивающей программе

технической направленности

«Программирование на Python»





Возраст детей: 10-17 лет





Автор: Костычев Вадим Александрович













г. Заречный Пензенской области

2024 г.

В ходе изучения программирования на основе языка Python большую роль играет разработка проектов. Они позволяют отработать как навыки программирования, вспомнить работу различных функций, команд, развить навыки построения алгоритмов.

Целью данной разработки является повышение интереса учащихся к техническому творчеству посредством работы над проектом на языке Python.

Данная методическая разработка используется как обучающий пример для работы по дополнительной общеобразовательной общеразвивающей программе технической направленности «Программирование на Python». С их помощью учащиеся смогут применить теоретические знания на практике, построив сложные алгоритмы для решения различных задач.

Поток ввода sys.stdin

Поток ввода sys.stdin – это один из интересных объектов языка программирования Python, куда попадает весь текст введенный пользователем за время работы программы. Потока ввода называется так, потому что текст в объекте хранится ровно до того момента, как мы его прочитаем. Затем текст, прочитанный программой, из потока удаляется и восстановить его невозможно. Текст же, который программа не успела прочитать – остается в потоке до момента его прочтения.

Итак, текст, переданный в программу остается на время в потоке, а мы его можем забирать при помощи различных функций, например, хорошо знакомой нам функции input().

Так как sys.stdin по сути своей является итератором, то его невозможно перезапустить. Подобно итератором в циклах он может двигаться только вперед передавая данные программе.

Для того чтобы работать с потоками нам необходимо подключить модуль sys командой:

import sys

Напишем с вами программу, которая будет повторять строки, введенные пользователем:



import sys



for each_line in sys.stdin:

print(line.strip('\n'))



В этой программе мы через цикл for берем по отдельности каждую строку из заполненного потока ввода, а затем выводим каждую строку по отдельности удаляя методом strip символ перевода строки. Символ перевода строки удаляется, как так при нажатии на enter пользователем она автоматически добавляется в поток. Команда print дублирует параметром end перенос строки в консоли при выводе этой строки.

Однако, если вы запустите программу, то она будет вечно принимать данные в консоли, вводимые пользователем. Чтобы ограничить ввод (закончить ввод) нам необходимо воспользоваться не нажатием на enter, как мы это делали раньше, а воспользоваться горячими клавишами. Так для работы в Linux или в PyCharm нам нужно будет нажать клавиши Ctrl + D, а при работе в консоли Windows – Ctrl + Z, при работе в Wing нам нужно будет нажать правой кнопкой мыши и нажать Send EOF в контекстном меню. Это нужно для записи символа End Of File, что будет означать для программы конец потока ввода данных.

По своей сути поток ввода данных нам необходим в том случае, когда мы не знаем сколько строк данных нам будет передано пользователем. Так, например, следующая программа выдаст нам ошибку ввода, если будет введена только одна строка, так как вторую он не сможет прочесть:



date1, date2 = input(), input()

print(date1)

print(date2)



Чтобы избежать подобных казусов мы и пользуемся потоком ввода, сохраняя все строки в списки. Рассмотрим первый вариант записи программы:



import sys



data = [each_line.strip() for each_line in sys.stdin]

print(*data)



Так же мы можем воспользоваться функциями list и map для работы с потоком ввода:



import sys



data = list(map(str.strip, sys.stdin))



Кроме того, мы можем воспользоваться функциями read и readlines подобно циклу for, которые помогут нам достать данные из потока ввода.

Функция readlines способна считать все строки итератора сохраняя символ переноса строки «/n»:



import sys



data = sys.stdin.readlines()



А функция read используется, если нет необходимости сохранять переносы строк из введенного текста пользователем, убирая символ переноса строки «/n»:



import sys



data = sys.stdin.read()



Важно еще раз отметить input() берет данные из потока ввода sys.stdin и по сути является командой sys.stdin.readline(), а объект sys.stdin представляет собой файловый объект, предоставляемый операционной системой с методами read(), readline(), readlines(), по сути является клавиатурным вводом.


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!