- Оператор ввода в Python: руководство
- Как работает оператор ввода данных Python
- input() в интерпретаторе
- Методы преобразования ввода: int(), float(), split()
- Боремся с ошибками ввода
- Встроенные функции в Python: print(), input(), split()
- Функция print()
- Функция input()
- Функция split()
- Разработка простейшего калькулятора
- Разработка продвинутого калькулятора
- Курсы Робикс, в которых изучается этот материал.
Оператор ввода в Python: руководство
Интерактивные возможности в Python обеспечиваются за счет ряда инструментов, одним из которых является функция input() . Ее также называют оператор ввода в Python . Главное назначение этого оператора заключается в том, чтобы принимать пользовательский ввод. Можно сказать, что он наполняет программы в Python смыслом, ведь без взаимодействия пользователя с приложением толку от последнего немного.
Как работает оператор ввода данных Python
Эта функция работает следующим образом:
user_name = input('Введите свое имя: ')
user_age = int(input('Сколько вам лет? '))
Сначала мы просим пользователя указать имя, а затем возраст, и оба этих ввода реализуются с помощью специального оператора, который принимает введенные значения и записывает их в переменные user_name и user_age . А далее мы работаем с этими значениями. Например, можно создать условие для входа на сайт по возрасту (для этого нам понадобится перевести значение возраста в целое число при помощи инструкции int() ) и написать приветствие, используя введенное имя пользователя:
if user_age < 18:
print('Извините, но вход только для совершеннолетних')
else:
print('Добро пожаловать на сайт,', user_name, '!')
А что будет, когда int() примет пустое значение? Например, если пользователь нажмет Enter. Допишем программу и посмотрим:
user_name = input('Введите свое имя: ')
user_age = int(input('Сколько вам лет? '))
if user_age < 18:
print('Извините, но вход только для совершеннолетних')
else:
print('Добро пожаловать на сайт,', user_name, '!')
input('Нажмите Enter для перехода в меню')
print('Добро пожаловать в меню')
При нажатии Enter программа переходит к следующей строке кода. А если ее нет, то выполняется выход из программы: такова логика работы функции. Поэтому последняя строка может быть такой:
input('Нажмите Enter для выхода')
И, если никаких строк в программе больше нет, произойдет выход. Вот полная версия программы:
user_name = input('Введите свое имя: ')
user_age = int(input('Сколько вам лет? '))
if user_age < 18:
print('Извините, но вход только для совершеннолетних')
else:
print('Добро пожаловать на сайт,', user_name, '!')
input('Нажмите Enter для перехода в меню')
print('Добро пожаловать в меню')
input('Нажмите Enter для выхода')
Если пользователь укажет разрешенный возраст, то увидит текст в блоке else , а если нет, то только в блоке if , а затем завершающее сообщение, которое высветится в конце для всех: Нажмите Enter для выхода . В программе оператор ввода используется 4 раза, причем в двух последних случаях он не принимает никаких значений, а нужен для перехода к следующей части кода и для выхода из программы.
input() в интерпретаторе
Выше мы написали готовую программу, но можно делать это построчно и в интерпретаторе Python. Правда в этом случае, чтобы переходить к написанию следующих строк кода, нам придется вводить данные сразу же:
>>> user_name = input('Введите свое имя: ')
Введите свое имя: Вася
>>> user_age = int(input('Сколько вам лет? '))
Сколько вам лет? 18
И так далее. Код тоже будет исполняться, а значения записываться в переменные, и таким способом можно тестировать отдельные блоки. Только помните, что значения будут сохраняться только до выхода из интерактивного режима, поэтому желательно параллельно дублировать код в файл с расширением .py .
Методы преобразования ввода: int(), float(), split()
В некоторых случаях необходимо преобразовать введенные данные в определенный тип: например, в целое число, рациональное число с запятой или в строку. С первым типом преобразования мы уже познакомились в прошлом примере:
user_age = int(input('Сколько вам лет? '))
Инструкция int() переводит значение в целочисленное, позволяя интерпретатору Python оперировать с ним как с числовым типом (цифры, введенные по умолчанию, не являются такими объектами, поэтому Питону нужна дополнительная инструкция). Добавим, что присвоение числовым переменным целочисленного значения реализуется и более длинным способом:
user_age = input('Сколько вам лет? ')
user_age = int(user_age)
Конечно, первый способ удобнее, но зато подробная запись более наглядна, что полезно для понимания работы функций и инструкций.
Для преобразования ввода в рациональные числа с плавающей запятой используется инструкция float() :
height = float(input('Введите свой рост в формате 1.72: '))
weight = float(input('Введите точный вес (до 0,1 кг) в формате 80.3: '))
height = input('Введите свой рост в формате 1.72: ')
height = float(height)
weight = input('Введите точный вес (до 0,1 кг) в формате 80.3: ')
weight = float(weight)
Теперь программа преобразует введенные числа в числа с плавающей запятой и затем сможет оперировать ими в расчетах.
Инструкция split() позволяет преобразовывать вводимые слова в списки. Вот как она работает:
animals = input('Введите названия любимых животных через пробел: ').split()
print('Вот они в виде списка:', animals)
Введите названия любимых животных через пробел: кот собака заяц лиса медведь
Вот они в виде списка: ['кот', 'собака', 'заяц', 'лиса', 'медведь']
Боремся с ошибками ввода
Нередко случается, что пользователи ошибаются при вводе или вводят некорректные символы намеренно. В этом случае неверный ввод может спровоцировать вылет:
>>> height = float(input('Введите свой рост в формате 1.72: '))
Введите свой рост в формате 1.72: 1ю72
Traceback (most recent call last):
File "", line 1, in
height = float(input('Введите свой рост в формате 1.72: '))
ValueError: could not convert string to float: '1ю72'
Появилась ошибка, в описании которой указано, что интерпретатор не может преобразовать строку в число. Поэтому для таких случаев мы должны предусмотреть защиту. Реализуется она с помощью условной конструкции try-except :
try:
height = float(input('Введите свой рост в формате 1.72: '))
except ValueError:
height = float(input('Введите свой рост в указанном формате: '))
Теперь вспомним нашу первую программу и сделаем более надежной и ее, переписав блок кода с вводом возраста таким образом:
try:
user_age = int(input('Сколько вам лет? '))
except ValueError:
user_age = int(input('Введите число: '))
Однако при повторной ошибке ввода такие программы всё равно вылетят. Для максимальной устойчивости можно организовать ввод с использованием цикла:
while True:
try:
height = float(input('Введите свой рост в формате 1.72: '))
break
except ValueError:
print('Давайте ещё разок,')
continue
print('Спасибо!')
Мы использовали цикл while с инструкциями break и continue . Теперь программа работает так: если введенное значение корректно, цикл прерывается (действует оператор break ) и программа переходит к завершающему блоку кода: print(‘Спасибо!’) . Если же введенное значение нельзя преобразовать в число с плавающей запятой, мы обрабатываем ошибку ValueError при помощи исключения except и инструкции continue . Последняя не позволяет программе вылетать после очередной ошибки ввода, а возвращает ее к началу цикла. В результате, поскольку условие try не выполняется, программа будет предлагать пользователю ввести данные до тех пор, пока он не сделает это корректно.
Для устойчивой к ошибкам программы с возрастом полный код будет выглядеть так:
user_name = input('Введите свое имя: ')
while True:
try:
user_age = int(input('Сколько вам лет? '))
break
except ValueError:
print('А если серьезно?')
continue
if user_age < 18:
print('Извините, но вход только для совершеннолетних')
else:
print('Добро пожаловать на сайт,', user_name, '!')
input('Нажмите Enter для перехода в меню')
print('Добро пожаловать в меню')
input('Нажмите Enter для выхода')
Конечно, в этих программах вы сможете ввести любые цифры (и рост 3 метра, и возраст 300 лет), но, чтобы заставить пользователей вводить реалистичные данные, потребуется использовать диапазоны значений. Впрочем, это выходит за рамки данной статьи, а с вводом и с исключением ошибок ввода мы уже разобрались.
Встроенные функции в Python: print(), input(), split()
Функции в Python: print(), input(), split(), использование функций на примере простейшего и продвинутого калькуляторов.
Функция print()
Для работы со скриптом надо познакомиться с функцией print(). Данная функция языка Python предназначена для вывода того, что заключено в ее скобках, например:
В скобках могут быть любые типы данных. Кроме того, количество данных может быть различным:
Если в скобках стоит выражение, то сначала оно выполняется, после чего print() уже выводит результат данного выражения:
Если нам необходимо, чтобы какая-либо математическая операция отображалась на экране, но не выполнялась, мы заключаем данное выражение в кавычках:
Напишем и запустим простую функцию, выводящую результаты арифметических действий над операндами:
a = 14 b = 5 print("a = ", a) print("b = ", b) print ("Сложение a + b = ", a+b) print ("Вычитание a - b = ", a-b) print ("Умножение a * b = ", a*b) print ("Деление a / b = ", a/b) print ("Целая часть от деления a // b = ",a//b) print ("Остаток от деления a % b = ",a%b) print ("Смена знака -a = ", -a) print ("Модуль числа abs(-a) = ", abs(-a)) print ("Возведение в степень a**2 = ", a**2)
Сохраняем код с расширением .py и запускаем. На экране должно появиться следующее:
a = 14 b = 5 Сложение a + b = 19 Вычитание a - b = 11 Умножение a * b = 70 Деление a / b = 2.8 Целая часть от деления a // b = 2 Остаток от деления a % b = 4 Смена знака -a = -14 Модуль числа abs(-a) = 14 Возведение в степень a**2 = 196
Функция input()
Если нам необходимо дать команду программе, то есть сообщить ей некоторую информацию, используется функция input(). Эта функция ожидает ввода с клавиатуры, результатом ее выполнения является введенная вами строка.
Чтобы пользователь Вашей программы понял, что ему необходимо ввести, в скобках можно оставить комментарий с указанием действий.
>>> s = input('Input number:') Input number:123 >>> s '123'
Если заранее известно, что с клавиатуры будут вводить только символы цифр, можно использовать следующую конструкцию для присвоения значений переменным:
>>> num = float(input('input number: ')) input number: 23 >>> type(num) >>> num 23.0
Функция split()
Специальная функция split() позволяет легко разделить начальную строку на отдельные кусочки. Для этого в кавычках указывается разделитель.
>>> s = 'Hello world' >>> s.split(' ') ['Hello', 'world']
В данном примере мы разделяли по пробелу. Если в скобках ничего не указывать, то по умолчанию будет разделение по проблему:
>>> s = 'Hello world' >>> s.split() ['Hello', 'world']
Также Python позволяет разделить по определенному символу:
>>> s = 'Hello world' >>> s.split('o') ['Hell', ' w', 'rld'] >>> s.split('w') ['Hello ', 'orld']
Если ввести новую переменную, то можно будет обратиться к отдельным элементам разбитой строки:
>>> a = s.split() >>> a ['Hello', 'world'] >>> a[0] 'Hello' >>> a[1] 'world'
Итогом работы функции split() является массив данных типов str.
Данная функция полезна, если необходимо выбирать какие-то определенные элементы строки, причем нам заранее известен порядок следования данных (например, когда заполняются ФИО при оформлении документов).
Разработка простейшего калькулятора
Необходимо написать программу, которая принимает на вход один символ, умножает его на заранее заданное число (например, на 2), в результате выдает произведение.
a = 2; num = float(input("Введи число: ")) print(a*num)
В результате получаем следующее:
Разработка продвинутого калькулятора
Необходимо написать программу, которая на вход получает два символа, разделенных пробелом. Результатом программы является вывод суммы и произведения этих введенных данных:
a = input("Введи два числа: ").split(" ") print(float(a[0]) + float(a[1])) print(float(a[0]) * float(a[1]))
В результате получаем следующее:
Введи два числа: 2 6 8.0 12.0