Урок 5. Ввод и вывод данных
2.11. Ввод данных с клавиатуры
В Python есть встроенная функция input для получения ввода с клавиатуры:
name = input()
Прежде чем вызывать input, было бы хорошо напечатать сообщение для пользователя о том, что требуется ввести. Такое сообщение называют приглашением. Можно указать приглашение в качестве аргумента input:
name = input("Ваше имя? ")
Когда вызывается функция input, программа “останавливается” и ждет, чтобы пользователь что-нибудь ввел с клавиатуры. Когда пользователь нажимает клавишу Enter, выполнение программы возобновляется, и функция input возвращает то, что ввел пользователь, как значение типа str (строка):
name = input("Ваше имя? ") Ваше имя? Максим
В ответ на приглашение “Как вас зовут?” пользователь ввел “Максим”. Обратите внимание, что приглашение является строкой, и поэтому должно быть заключено в кавычки.
Чтобы сказать компьютеру, что пользователь вводит числа, необходимо воспользоваться функцией преобразования типа int() или float(). Первое используется для целых чисел, второе - для дробных.
n = input("Введите целое число: ") n = int(n)
Пользователю предлагается ввести целое число. Если пользователь введет последовательность цифр, то введенное им значение будет преобразовано в целое число и присвоено переменной n. Python позволяет объединять оператор ввода input и преобразования типа int в одной строке, например так:
n = int(input("Введите целое число: "))
Для дробных чисел используется функция float(). Для сокращения программы, можно сразу поставить выражение input внутрь выражения float. Например, эти строки кода:
m = input("Введите массу объекта в кг:") m = float(m)
Выполняют то же самое, что и строка:
m = float(input("Введите массу объекта в кг:"))
В данном случае, результат функции input сразу будет передан в функцию float. Оба варианта работают, и, конечно, программист сам должен выбирать, какой же вариант ему использовать. Однако в любом случае очень важно понимать оба варианта.
2.12. Вывод данных на экран
Для вывода данных на экран используется функция print(), которая выводит значения переданных ей выражений.
Строки выводятся без кавычек и между элементами вставляются пробелы, благодаря чему форматирование вывода улучшается.
Для отключения перевода строки после вывода используется параметр end.
# Пример 05.1
# Отключение перевода строки a, b = 1, 1 print(a, b, end=' ') a, b = 2, 3 print(a, b, end=' ')
В таком варианте значения переменных будут выведены не в столбик, а в одной строке. Результат выполнения:
1 1 2 3
При выводе данных можно выполнить преобразование объекта (переменной) в строку функцией str():
str(object) -> string
Например:
# Пример 05.2 # Преобразование объекта в строку x = 10 * 3.25 y = 200 * 200 s = 'Значение х = ' + str(x) + ', а значение y = ' + str(y) print(s) |
Результат выполнения:
Значение х = 32.5, а значение y = 40000
Бывают ситуации, когда данные на экран надо вывести не через один пробел, а в виде таблицы. Другими словами, в полях определенной ширины, где ширина измеряется в знакоместах.
Рассмотрим пример. Допустим надо вывести числа второй строки под числами первой. Если выполнить функцию print() так:
print(10,235) print(1000,50)
то результат будет выглядеть так:
10 235
1000 50
Поэтому, чтобы вывод выглядел красиво, необходимо задать ширину поля. Делается это так:
print("%5d%7d" % (10,235)) print("%5d%7d" % (1000,50))
Результат:
10 235
1000 50
Здесь в кавычках указаны форматы данных и ширина полей. После знака % за кавычками указаны данные, которые будут подставлены вместо каждого указанного формата. Если количество форматов не совпадает с количеством данных, то возникнет ошибка.
Форматы данных могут быть:
d - целое число, s - строка, f - вещественное число.
По умолчанию, данные выравниваются по правому краю поля. Чтобы выровнять их по левому краю достаточно поставить знак минус перед числом, обозначающим ширину поля. Пример:
print("%-5d%7d" % (10,235)) print("%-5d%7d" % (1000,50))
Результат:
10 235
1000 50
2.13. Пример скрипта, использующего ввод и вывод данных
Задача.
Пользователь вводит два числа. Одно присваивается одной переменной, а второе - другой. Необходимо поменять значения переменных так, чтобы значение первой оказалось во второй, а второй - в первой.
Пояснение к задаче и алгоритмы решения:
Существует несколько способов обменять значения переменных. Первый подходит для любых типов данных, а второй - только для числовых. Третий способ возможен только на языке программирования Python.
1-й способ. Через "буферную" переменную
1. Пусть первое введенное значение присвоено переменной a, второе - b.
2. Присвоим некой третьей переменной (например, c) значение, хранимое в a. Таким образом, окажется, что одно и то же значение будет сохранено в двух переменных.
3. Запишем значение переменной b в a. Таким образом, мы "затрем" прежнее содержимое a, при этом значение b будет храниться в двух переменных.
4. Однако значение a не потеряно, т.к. заранее было сохранено в c. Теперь мы можем присвоить переменной b значение, хранимое в c.
В результате данных трех присвоений окажется, что в переменной a будет значение b, в b - значение a.
Код программы на языке Python:
# Пример 05.3
# обмен значения переменных a = int(input()) b = int(input()) print('a=%d; b=%d' % (a, b)) c = a a = b b = c
print('a=%d; b=%d' % (a, b))
2-й способ. Путем арифметических операций
1. Запишем в переменную a сумму значений двух переменных: a и b.
2. Переменной b присвоить разность между новым значением переменной a и значением b. Таким образом, в b окажется старое значение a.
3. Переменной a присвоить разность между ее текущим значением и новым значением переменной b. В результате в a окажется старое значение b. Код программы на языке Python:
# Пример 05.4
# обмен значений двух переменных a = int(input()) b = int(input()) print('a=%d; b=%d' % (a, b)) a = a + b b = a - b a = a - b
print('a=%d; b=%d' % (a, b))
3-й способ. Через кортеж.
Особенности решения на языке программирования Python:
Для Python существует и третий способ решения задачи - через кортеж. Выглядит это, например, так: a, b = b, a.
В левой части у нас кортеж из двух переменных, а в правой - кортеж из двух значений. Каждое значение присваивается соответствующей ему переменной. Все выражения в правой части вычисляются до того, как выполняется первое присваивание. В результате данного действия значение b окажется связанным с a, значение a – с b.
Код программы на языке Python:
# Пример 05.5
# обмен значений двух переменных a = int(input()) b = int(input()) print('a=%d; b=%d' % (a, b))
a, b = b, a print('a=%d; b=%d' % (a, b))
Пример выполнения скрипта на Python:
5 2 a=5; b=2 a=2; b=5
© ООО «Знанио»
С вами с 2009 года.