Ввод и вывод данных
Мы уже встречались с функцией print()
. Она отвечает за вывод данных, по-умолчанию на экран. Если код содержится в файле, то без нее не обойтись. В интерактивном режиме в ряде случаев можно обойтись без нее.
Ввод данных в программу и их вывод важны в программировании. Без ввода программы делали бы одно и то же, исключая случаи, когда в них самих генерируются случайные значения. Вывод позволяет увидеть, использовать, передать дальше результат работы программы.
Обычно требуется, чтобы программа обрабатывала какой-то диапазон различных входных данных, которые поступают в нее из внешних источников. В качестве последних могут выступать файлы, клавиатура, сеть, выходные данные из другой программы. Вывод данных также возможен в файлы и др. Однако во многих случаях это происходит на экран монитора.
Можно сказать, что программа – это открытая система, которая обменивается чем-либо с внешней для нее средой. Если живой организм в основном обменивается веществом и энергией, то программа – данными, информацией.
Вывод данных. Функция print()
Что такое функция в программировании, узнаем позже. Пока будем считать, что print()
– это такая команда языка Python, которая выводит то, что в ее скобках на экран.
>>> print(1032)
1032
>>> print(2.34)
2.34
>>> print("Hello")
Hello
В скобках могут быть любые типы данных. Кроме того, количество данных может быть различным:
>>> print("a:", 1)
a: 1
>>> one = 1
>>> two = 2
>>> three = 3
>>> print(one, two, three)
1 2 3
Можно передавать в функцию print()
как непосредственно литералы (в данном случае "a:" и 1), так и переменные, вместо которых будут выведены их значения. Аргументы функции (то, что в скобках), разделяются между собой запятыми. В выводе вместо запятых значения разделены пробелом.
Если в скобках стоит выражение, то сначала оно выполняется, после чего print()
уже выводит результат данного выражения:
>>> print("hello" + " " + "world")
hello world
>>> print(10 - 2.5/2)
8.75
В print()
предусмотрены дополнительные параметры. Например, через параметр sep
можно указать отличный от пробела разделитель строк:
>>> print("Mon", "Tue", "Wed", "Thu",
... "Fri", "Sat", "Sun", sep="-")
Mon-Tue-Wed-Thu-Fri-Sat-Sun
>>> print(1, 2, 3, sep="//")
1//2//3
Параметр end
позволяет указывать, что делать, после вывода строки. По-умолчанию происходит переход на новую строку. Однако это действие можно отменить, указав любой другой символ или строку:
>>> print(10, end="")
10>>>
Обычно end
используется не в интерактивном режиме, а в скриптах, когда несколько выводов подряд надо разделить не переходом на новую строку, а, скажем, запятыми. Сам переход на новую строку обозначается символом '\n'. Если присвоить это значение параметру end
, то никаких изменений в работе функции print
вы не увидите, так как это значение и так присвоено по-умолчанию:
>>> print(10, end='\n')
10
>>>
Однако, если надо отступить на одну дополнительную строку после вывода, то можно сделать так:
>>> print(10, end='\n\n')
10
>>>
Следующее, что стоит рассказать о функции print
– это использование форматирования строк. На самом деле оно никакого отношения к print
не имеет, а применяется к строкам. Однако часто форматирование используется в сочетании с вызовом функции print()
.
Форматирование может выполняться в так называемом старом стиле или с помощью строкового метода format
. Старый стиль также называют Си-стилем, так как он схож с тем, как происходит вывод на экран в языке C. Рассмотрим пример:
>>> pupil = "Ben"
>>> old = 16
>>> grade = 9.2
>>> print("It's %s, %d. Level: %f" %
... (pupil, old, grade))
It's Ben, 16. Level: 9.200000
Здесь вместо трех комбинаций символов %s
, %d
, %f
подставляются значения переменных pupil, old, grade. Буквы s
, d
, f
обозначают типы данных – строку, целое число, вещественное число. Если бы требовалось подставить три строки, то во всех случаях использовалось бы сочетание %s
.
Хотя в качестве значения переменной grade было указано число 9.2, на экран оно вывелось с дополнительными нулями. Однако мы можем указать, сколько требуется знаков после запятой, записав перед буквой f
точку с желаемым числом знаков в дробной части:
>>> print("It's %s, %d. Level: %.1f"
... % (pupil, old, grade))
It's Ben, 16. Level: 9.2
Теперь посмотрим на метод format()
:
>>> print("This is a {0}. It's {1}."
... .format("ball", "red"))
This is a ball. It's red.
>>> print("This is a {0}. It's {1}."
... .format("cat", "white"))
This is a cat. It's white.
>>> print("This is a {0}. It's {1} {2}."
... .format(1, "a", "number"))
This is a 1. It's a number.
В строке в фигурных скобках указаны номера данных, которые будут сюда подставлены. Далее к строке применяется метод format()
. В его скобках указываются сами данные (можно использовать переменные). На нулевое место подставится первый аргумент метода format()
, на место с номером 1 – второй и т. д.
На самом деле возможности метода format()
существенно шире, и для их изучения понадобился бы отдельный урок. Нам пока будет достаточно этого.
Ввод данных. Функция input()
За ввод в программу данных с клавиатуры в Python отвечает функция input
. Когда вызывается эта функция, программа останавливает свое выполнение и ждет, когда пользователь введет текст. После этого, когда он нажмет Enter, функция input()
заберет введенный текст и передаст его программе, которая уже будет обрабатывать его согласно своим алгоритмам.
Если в интерактивном режиме ввести команду input()
, то ничего интересного вы не увидите. Компьютер будет ждать, когда вы что-нибудь введете и нажмете Enter или просто нажмете Enter. Если вы что-то ввели, это сразу же отобразиться на экране:
>>> input()
Yes!
'Yes!'
Функция input()
передает введенные данные в программу. Их можно присвоить переменной. В этом случае интерпретатор не выводит строку сразу же:
>>> answer = input()
No, it is not.
В данном случае строка сохраняется в переменной answer, и при желании мы можем вывести ее значение на экран:
>>> answer
'No, it is not.'
При использовании функции print()
кавычки в выводе опускаются:
>>> print(answer)
No, it is not.
Куда интересней использовать функцию input()
в скриптах – файлах с кодом. Рассмотрим такую программу:


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


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


В данном случае с помощью функций int()
и float()
строковые значения переменных orange и price преобразуются соответственно в целое число и вещественное число. После этого новые численные значения присваиваются тем же переменным.
Программный код можно сократить, если преобразование типов выполнить в тех же строках кода, где вызывается функция input()
:
orange=int(input('Сколько апельсинов? '))
price=float(input('Цена одного апельсина? '))
summa=orange*price
print('Заплатите',summa,'рублей')
Сначала выполняется функция input()
. Она возвращает строку, которую функция int()
или float()
сразу преобразует в число. Только после этого происходит присваивание переменной, то есть она сразу получает численное значение.
Практическая работа
Напишите программу (файл user.py), которая запрашивала бы у пользователя: - его имя (например, "What is your name?") - возраст ("How old are you?") - место жительства ("Where are you live?") После этого выводила бы три строки: "This is имя" "It is возраст" "(S)he live in место_жительства" Вместо имя, возраст, место_жительства должны быть данные, введенные пользователем. Примечание: можно писать фразы на русском языке, но если вы планируете стать профессиональным программистом, привыкайте к английскому.
Напишите программу (файл arithmetic.py), которая предлагала бы пользователю решить пример 4 * 100 - 54. Потом выводила бы на экран правильный ответ и ответ пользователя. Подумайте, нужно ли здесь преобразовывать строку в число.
Запросите у пользователя четыре числа. Отдельно сложите первые два и отдельно вторые два. Разделите первую сумму на вторую. Выведите результат на экран так, чтобы ответ содержал две цифры после запятой.
Last updated
Was this helpful?