Позволяет производить ввод данных в консоли.
Синтаксис:
Параметры:
prompt
- строка подсказки.
Возвращаемое значение:
Описание:
Функция
input()
позволяет обеспечить ввод пользовательских данных из консоли. Если передан необязательный
аргумент подсказки
prompt
, то он записывается в стандартный вывод без завершающей строки. Затем функция читает строку из ввода и преобразует ее в
СТРОКУ, убирая завершающий символ строки
'\n'
и возвращает ее в качестве значения.
Другими словами, все что вводится в консоль при использовании
встроенной функции input()
преобразуется в
тип str
. Это происходит в том числе и с числами. Следовательно, числовые данные, перед их использованием необходимо распознавать и преобразовывать к нужным типам.
Если был импортирован модуль
readline
, то функция
input()
будет использовать его для обеспечения сложных функций редактирования строк и истории.
- В случае считывания
EOF
(признак конца файла), поднимается исключение EOFError
. - Перед чтением ввода, функция
input()
вызывает событие аудита input
с аргументом prompt
. - После успешного чтения ввода, вызывает событие аудита
input
c результатом resultс
.
Примеры получения/ввода данных из консоли/клавиатуры.
Общие примеры использования функции input()
.
>>> x = input('Enter your name:')
# Enter your name:Anton
>>> print('Hello, ', x)
# Hello, Anton
# Можно и без строки подсказки
>>> print('Введите число:')
# Введите число:
>>> x = input()
# 10
# Не забываем что функция
# возвращает строку
>>> x
# '10'
Проверка и преобразование типов при вводе данных с клавиатура.
Пример представляет собой программу подсчета суммы или произведения введенных в консоль чисел. В примере будем распознавать числовые типы на примере типов
int
и
float
, читаемые функцией
input()
из консоли интерпретатора Python.
# test.py
def str_to_num(line):
"""функция конвертирует строку в число"""
line = line.strip()
# если в строке только цифры
if line.isdigit():
return int(line)
# если строка содержит точку или запятую
elif '.' in line or ',' in line:
# если из строки убрать точку или запятую
# и при этом в строке останутся только цифры
if any(line.replace(x, '').isdigit() for x in ['.', ',']):
return float(line.replace(',', '.'))
else:
# ошибка
print('Это не число!\n')
return None
print('\nДля выхода из программы введите Ctrl+C')
print('Для окончания ввода цифр нажмите Enter\n')
nums = []
while True:
inpt = input('Ожидается ввод числа или Enter:')
if inpt == '':
# Закончить ввод чисел
break
n = str_to_num(inpt)
if n is not None:
nums.append(n)
if nums:
if len(nums) == 1:
print('Вы ввели одну цифру: ', nums[0])
else:
print('\nВыберите действие:')
print(' сложить цифры введите 1;')
print(' умножить цифры введите 2.\n')
rez = None
while True:
inpt = input('Введите 1 или 2:')
inpt = inpt.strip()
if inpt == '1':
rez = sum(nums)
print('Сумма введенных чисел:', rez)
elif inpt == '2':
rez = 1
for i in nums:
rez *= i
print('Произведение введенных чисел:', rez)
else:
print('Неправильное действие.\n')
if rez is not None:
break
else:
print('Вы ничего не ввели.')
Вывод программы:
$ python3 test.py
Для выхода из программы введите Ctrl+C
Для окончания ввода цифр нажмите Enter
Ожидается ввод числа или Enter:10
Ожидается ввод числа или Enter:13.9
Ожидается ввод числа или Enter:9,9
Ожидается ввод числа или Enter:
Выберите действие:
сложить цифры введите 1;
умножить цифры введите 2.
Введите 1 или 2:2
Произведение введенных чисел: 1376.1000000000001
Эмуляция терминала с использованием функцией input()
.
# test.py
import sys, traceback
def run_user_code(envdir):
source = input(">>> ")
try:
# Выполнение введенного кода с клавиатуры
exec(source, envdir)
except Exception:
print("Exception in user code:")
print("-"*60)
traceback.print_exc(file=sys.stdout)
print("-"*60)
# словарь для хранения введенных переменных
envdir = {}
while True:
run_user_code(envdir)
Запускаем эмуляцию интерпретатора Python.
$ python3 test.py
>>> a = 3
>>> b = '1'
>>> a + b
Exception in user code:
------------------------------------------------------------
Traceback (most recent call last):
File "tt.py", line 6, in run_user_code
exec(source, envdir)
File "<string>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
------------------------------------------------------------