Доброго дня на моем канале о программировании и программистах. Old Programmer всегда к вашим услугам. Сегодня программирование на Python.
Некоторые ссылки по моему каналу
Стандартная функция input() в Python. Полное описание
Описание формата
Функция input() на первый взгляд не сложная функция. Действительно в общем виде ее можно представить
s = input([подсказка])
Функция ждет ввода с клавиатуры строки. Введенная строка присваивается переменной s. При этом можно определить необязательную подсказку. Например так
fio = input('Введите ваше ФИО: ')
При запуске появляется подсказка и пользователь должен ввести с клавиатуры некую строку. Ввод заканчивается нажатием клавиши Enter. По сути и все, но дальше начинается самое интересное, так нужно во-первых, разобраться в деталях, во-вторых, вспомнить общие принципы программирования на Python и попробовать применить их к нашей функции.
Деталь, собственно, одна, это нажатие клавиши Enter. Нажатием клавиши Enter вводится символ перевода строки. Для Linux это просто байт равный 10. Это сигнал для функции input(), что ввод закончился. После этого функция возвращает введенную строку, в конце которой, однако, отсутствует символ с кодом 10. Это важный момент, так как не все функции ввода отбрасывают этот байт. Следует всегда внимательно читать документацию.
Простой ввод
Как мы уже писали в предыдущем разделе, в результате работы функции input() со стандартного устройства ввода (по умолчанию это клавиатура) вводится строка.
s = input()
А далее с этой строкой вы можете делать всё, что захотите. Например, преобразовать ее к числу, если это возможно.
Или получить список слов
Также следует иметь в виду, что в конце и в начале строки могут стоять пробелы, которые могут помешать дальнейшим действиям. Для строк используется известный метод strip().
s = s.strip()
Для ввода массива можно использовать простую схему с циклом while. Мы закомментировали возможные строки, которые управляют вводом элементов списка строк (5009p.py). Вы всегда можете ввести вместо них свои условия и действия и убрать комментарии.
Преобразование ввода
Представленный в 5009p.py пример схемы ввода массива строк несколько громоздок, но зато весьма понятен. Однако настоящие питонисты, конечно, сокращают запись разными уловками, которых в Python огромное количество. Покажем некоторые из них.
Начнем с удобной функции map. Она позволяет работать с набором, применяя к каждому элементу набора некоторую, указанную первым аргументом функцию.
Представленный фрагмент осуществляет ввод трех чисел в строке, отделенных друг от друга пробелами. Особо отметим, что int это ссылка на функцию int(), преобразует строку в число. Так вот, вы можете указать здесь любую функцию, которая принимает строку, производит какие-то действия над ней и возвращает какое-то данное. Для этого вы можете написать свою собственную функцию и указать ее имя в качестве первого аргумента. Например так (5011p.py). В этой программе переменным сразу присваиваются квадраты введенных чисел.
Может возникнуть вопрос: а что если количество вводимых элементов строки не равно трем или они не могут быть преобразованы к числу? Ну чтож, тогда вам следует изучить обработку исключений. Но это уже совсем другая история.
Разумеется функцию map() можно приспособить и к вводу списка. Например так
ls = list(map(f1, input().split()))
Список формируется из введенных в одной строке чисел. При нажатии Enter (конец строки) мы получаем список и можем использовать его в нашей программе.
Очень интересно использование генераторов. У меня на канале уже была статья о генераторах, так что сошлюсь на нее и приведу только один пример (5012p.py).
В программе формируется список на основе введенных в строке слов, отделенных пробелами. Причем отбрасываются слова, длина которых меньше 3.
Ввод из текстового файла
Описанные выше нами использование функции input() это лишь частный случай ввода строк с клавиатуры. На самом деле чаще программа принимает данные из некого внешнего источника, который обычно бывает неким текстовым файлом. Напомню, что строки в текстовом файле как раз отделяются друг от друга символом перевода строки.
Рассмотрим программу 5013p.py. Если сделать ее исполняемой, что в операционных системах Linux вполне естественно, можно написать такую команду
./5013p.py < input.txt
Где input.txt это текстовый файл. При этом переменной s присваивается первая в файле строка.
Ну, а если нам хочется ввести целый массив строк из некоего файла, то можно использовать программу 5009p.py:
./5009p.py < file.txt
До скорой встречи на моем канале Old Programmer. Канале о программировании и программистах. Пишите комментарии, ставьте лайки и подписывайтесь.
Список разделов канала Old Programmer, канала о программировании и программистах.
#программирование #python #языки программирования #обучение программированию