Книга «Изучаем Python»



Pdf көрінісі
бет71/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   67   68   69   70   71   72   73   74   ...   238
ПРИМЕЧАНИЕ

Sublime Text не запускает программы, запрашивающие входные данные у пользователя . Вы 

можете использовать Sublime Text для создания таких программ, но запускать их придется 

из терминального окна . См . «Запуск программ Python в терминале», с . 29 .

Содержательные подсказки

Каждый раз, когда в вашей программе используется функция 

input()

, вы должны 

включать четкую, понятную подсказку, которая точно сообщит пользователю, 

какую информацию вы от него хотите получить. Подойдет любое предложение, 

которое сообщает пользователю, что нужно вводить. Пример:

greeter.py

name = input("Please enter your name: ")

print("Hello, " + name + "!")

Добавьте пробел в конце подсказки (после двоеточия в предыдущем примере), 

чтобы отделить подсказку от данных, вводимых пользователем, и четко показать, 

где должен вводиться текст. Пример:

Please enter your name: Eric

Hello, Eric!

Иногда подсказка занимает более одной строки. Например, вы можете сообщить поль-

зователю, для чего программа запрашивает данные. Текст подсказки можно сохранить 

в переменной и передать эту переменную функции 

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!



122    Глава 7  •  Ввод данных и циклы while

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

При использовании функции 

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

>>> age >= 18



Traceback (most recent call last): 

  File "", line 1, in  

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



Когда вы пытаетесь сравнить введенные данные с числом в точке , Python выдает 

ошибку, потому что не может сравнить строку с числом: строка 

'21'

, хранящаяся 



в 

age


, не сравнивается с числовым значением 18; происходит ошибка .

Проблему можно решить при помощи функции 

int()

, интерпретирующей строку 



как числовое значение. Функция 

int()


 преобразует строковое представление числа 

в само число:

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

How old are you? 21

>>> age = int(age)



>>> age >= 18

True 


В этом примере введенный текст 

21

 интерпретируется как строка, но затем он 



преобразуется в числовое представление вызовом 

int()


 в точке . Теперь Python 

может проверить условие: сравнить переменную 

age

 (которая теперь содержит 



числовое значение 21) с 18. Условие «значение 

age


 больше или равно 18» выпол-

няется, и результат проверки равен 

True

.

Как использовать функцию 



int()

 в реальной программе? Допустим, программа 

проверяет рост пользователя и определяет, достаточен ли он для катания на ат-

тракционе:



rollercoaster.py

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

height = int(height)



Как работает функция input()    123

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!

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

грамме для вычислений и сравнений, обязательно преобразуйте введенное значение 

в его числовой эквивалент.

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

При работе с числовыми данными может пригодиться оператор вычисления остат-

ка (


%

), который делит одно число на другое и возвращает остаток:

>>> 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.




124    Глава 7  •  Ввод данных и циклы while

Ввод данных в Python 2 .7

Если вы работаете с Python 2.7, для запроса данных у пользователя следует ис-

пользовать функцию 

raw_input()

. Эта функция интерпретирует весь ввод как 

строку — точно так же, как функция 

input()


 в Python 3.

В Python 2.7 также есть функция 

input()

, но эта функция интерпретирует пользо-

вательский ввод как код Python и пытается выполнить его. В лучшем случае Python 

не сможет интерпретировать введенные данные, и вы получите сообщение об ошиб-

ке; в худшем случае будет выполнен код, который вы выполнять не собирались. 

Итак, в Python 2.7 вместо функции 

input()

 используется функция 

raw_input()

.



Достарыңызбен бөлісу:
1   ...   67   68   69   70   71   72   73   74   ...   238




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет