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

greeter.py

prompt = "If you tell us who you are, we can personalize the messages you see."

prompt += "\nWhat is your first name? "

name = input(prompt)

print("\nHello, " + name + "!")

В этом примере продемонстрирован один из способов построения длинных строк. Первая часть длинного сообщения сохраняется в переменной prompt. Затем оператор += объединяет текст, хранящийся в prompt, с новым фрагментом текста.

Теперь содержимое prompt занимает две строки (вопросительный знак снова отделяется от ввода пробелом):

If you tell us who you are, we can personalize the messages you see.

What is your first name? Eric

Hello, Eric!

<p>Использование int() для получения числового ввода</p>

При использовании функции input() Python интерпретирует все данные, введенные пользователем, как строку. В следующем сеансе интерпретатора программа запрашивает у пользователя возраст:

>>> age = input("How old are you? ")

How old are you? 21

>>> age

'21'

Пользователь вводит число 21, но, когда мы запрашиваем у Python значение age, выводится '21' — представление введенного числа в строковом формате. Кавычки, в которые заключены данные, указывают на то, что Python интерпретирует ввод как строку. Но попытка использовать данные как число приведет к ошибке:

>>> age = input("How old are you? ")

How old are you? 21

(1) >>> age >= 18

Traceback (most recent call last):

File "", line 1, in

(2)TypeError: unorderable types: str() >= int()

Когда вы пытаетесь сравнить введенные данные с числом в точке (1) , Python выдает ошибку, потому что не может сравнить строку с числом: строка '21', хранящаяся в age, не сравнивается с числовым значением 18; происходит ошибка (2).

Проблему можно решить при помощи функции int(), интерпретирующей строку как числовое значение. Функция int() преобразует строковое представление числа в само число:

>>> age = input("How old are you? ")

How old are you? 21

(1) >>> age = int(age)

>>> age >= 18

True

В этом примере введенный текст 21 интерпретируется как строка, но затем он преобразуется в числовое представление вызовом int() в точке (1) . Теперь Python может проверить условие: сравнить переменную age (которая теперь содержит числовое значение 21) с 18. Условие «значение age больше или равно 18» выполняется, и результат проверки равен True.

Как использовать функцию int() в реальной программе? Допустим, программа проверяет рост пользователя и определяет, достаточен ли он для катания на аттракционе:

rollercoaster.py

height = input("How tall are you, in inches? ")

height = int(height)

if height >= 36:

. .print("\nYou're tall enough to ride!")

else:

. .print("\nYou'll be able to ride when you're a little older.")

Программа может сравнить height с 36, потому что строка height = int(height) преобразует входное значение в число перед проведением сравнения. Если введенное число больше или равно 36, программа сообщает пользователю, что он прошел проверку:

How tall are you, in inches? 71

You're tall enough to ride!

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

<p>Оператор вычисления остатка</p>

При работе с числовыми данными может пригодиться оператор вычисления остатка (%), который делит одно число на другое и возвращает остаток:

>>> 4 % 3

1

>>> 5 % 3

2

>>> 6 % 3

0

>>> 7 % 3

1

Оператор % не сообщает частное от целочисленного деления; он возвращает только остаток.

Когда одно число нацело делится на другое, остаток равен 0, и оператор % возвращает 0. Например, этот факт может использоваться для проверки четности или нечетности числа:

even_or_odd.py

number = input("Enter a number, and I'll tell you if it's even or odd: ")

number = int(number)

if number % 2 == 0:

. .print("\nThe number " + str(number) + " is even.")

else:

. .print("\nThe number " + str(number) + " is odd.")

Четные числа всегда делятся на 2. Следовательно, если остаток от деления на 2 равен 0 (number % 2 == 0), число четное, а если нет — нечетное.

Enter a number, and I'll tell you if it's even or odd: 42

The number 42 is even.

<p>Ввод данных в Python 2.7</p>

Если вы работаете с Python 2.7, для запроса данных у пользователя следует использовать функцию raw_input(). Эта функция интерпретирует весь ввод как строку — точно так же, как функция input() в Python 3.

Перейти на страницу:

Все книги серии Библиотека программиста

Похожие книги