Читаем Изучаем Python полностью

Иногда подсказка занимает более одной строки. Например, вы можете сообщить пользователю, для чего программа запрашивает данные. Текст подсказки можно сохранить в переменной и передать эту переменную функции 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.

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

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

Программист-фанатик
Программист-фанатик

В этой книге вы не найдете описания конкретных технологий, алгоритмов и языков программирования — ценность ее не в этом. Она представляет собой сборник практических советов и рекомендаций, касающихся ситуаций, с которыми порой сталкивается любой разработчик: отсутствие мотивации, выбор приоритетов, психология программирования, отношения с руководством и коллегами и многие другие. Подобные знания обычно приходят лишь в результате многолетнего опыта реальной работы. По большому счету перед вами — ярко и увлекательно написанное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО любому, кто поставил себе такую цель. Конечно, опытные программисты могут найти некоторые идеи автора достаточно очевидными, но и для таких найдутся темы, которые позволят пересмотреть устоявшиеся взгляды и выйти на новый уровень мастерства. Для тех же, кто только в самом начале своего пути как разработчика, чтение данной книги, несомненно, откроет широчайшие перспективы. Издательство выражает благодарность Шувалову А. В. и Курышеву А. И. за помощь в работе над книгой.

Чед Фаулер

Программирование, программы, базы данных / Программирование / Книги по IT

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных