Функция input() - ввод данных

За ввод в программу данных с клавиатуры в Python отвечает функция input(). Когда вызывается эта функция, программа останавливает свое выполнение и ждет, когда пользователь введет текст. После этого, когда он нажмет Enter, функция input() заберет введенный текст и передаст его программе, которая уже будет обрабатывать его согласно своим алгоритмам.

Если в интерактивном режиме ввести команду input(), то ничего интересного вы не увидите. Компьютер будет ждать, когда вы что-нибудь введете и нажмете Enter или просто нажмете Enter. Если вы что-то ввели, это сразу же отобразиться на экране:

answer = input()   # Yes! - вводим в консоли
print(answer)      # Yes! - выведется в консоль
1
2

Функция input() передает введенные данные в программу. Их можно присвоить переменной. В этом случае интерпретатор не выводит строку сразу же:

answer = input()
print(answer, 'No, it is not.')   # <text> No, it is not.
1
2

В данном случае строка сохраняется в переменной answer, и при желании мы можем вывести ее значение на экран.

Куда интересней использовать функцию input() в скриптах – отдельно взятых файлах с кодом. Рассмотрим такую программу:

user_name = input()
user_city = input()
print("Your name is {0}. Your own city is {1}.".format(user_name, user_city))
1
2
3

При запуске программы, компьютер ждет, когда будет введена сначала одна строка, потом вторая. Они будут присвоены переменным nameUser и user_city. После этого значения этих переменных выводятся на экран с помощью форматированного вывода:

Den
NY
Your name is Den. Your own city is NY.
1
2
3

Вышеприведенный скрипт далек от совершенства. Откуда пользователю знать, что хочет от него программа? Чтобы не вводить в замешательство многозадачного биоробота, для функции input() предусмотрен специальный параметр-приглашение. Это приглашение выводится на экран при вызове input(). Усовершенствованная программа может выглядеть так:

user_name = input("Your name: ")
user_city = input("Your city: ")
print("Your name is {0}. Your own city is {1}".format(user_name, user_city))
1
2
3

Результат выполнения получиться следующий:

Your name: Den
Your city: NY
Your name is Den. Your own city is NY.
1
2
3

Обратите внимание, что в программу поступает строка. Даже если ввести число, функция input() все равно вернет его строковое представление. Но что делать, если надо получить число? Ответ: использовать функции преобразования типов:

number_1 = int(input("Enter the first number: "))
number_2 = int(input("Enter the second number: "))
print(number_1 + number_2)
1
2
3

Результат выполнения может быть следующий:

Enter the first number: 5
Enter the second number: 2
7
1
2
3

В данном случае с помощью функций int() или float() строковые значения переменных number_1 и number_2 преобразуются соответственно в целое число или дробное число. После этого новые численные значения присваиваются тем же переменным.

Упражнения

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

    • его имя (например, «What is your name?»)
    • возраст («How old are you?»)
    • место жительства («Where do you live?»)

    После этого выводила бы три строки:

    What is your name? Bob
    How old are you? 77
    Where do you live? Dublin
    
    "This is Bob."
    "(S)he is 77."
    "(S)he lives in Dublin."
    
    1
    2
    3
    4
    5
    6
    7

    Значения имя, возраст, место_жительства - произвольные, вводимые пользователем.

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

    Результат выполнения может быть следующий:

    Enter the first number: 4
    Enter the second number: 100
    Enter the third number: 54
    Solve example: 4 * 100 - 54 = 123
    
    Your answer: 123
    True answer: 346
    
    1
    2
    3
    4
    5
    6
    7

    Другой пример выполнения этой же программы:

    Enter the first number: 14
    Enter the second number: 3
    Enter the third number: 105
    Solve example: 14 * 3 - 105 = -58
    
    Your answer: -58
    True answer: -63
    
    1
    2
    3
    4
    5
    6
    7
  3. Запросите у пользователя четыре числа. Отдельно сложите первые два, отдельно вторые два числа и выведите суммы. Разделите первую сумму на вторую и выведите результат на экран.

    Результат выполнения может быть следующий:

    Enter the first number: 17
    Enter the second number: 3
    Enter the third number: 8
    Enter the fourth number: 2
    The sum of the first pair numbers is 20
    The sum of the second pair numbers is 10
    Division of sums equals 2.0
    
    1
    2
    3
    4
    5
    6
    7