Разберем, как работают функции ввода и вывода данных — input()
и print()
в Python. Начнем с функции print()
.
Функция print()
выводит на экран или в файл все переданные в нее аргументы.
print()
Полный синтаксис выглядит так:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
Аргументы функции:
objects
– объект, который нужно вывести, знак *
означает, что объектов для вывода может быть несколько.
sep
– разделяет объекты при выводе. По умолчанию: sep=' '
.
end
– это что выводится после вывода всех объектов, по умолчанию это перенос строки;
file
– служит для вывода в файл, ожидается объект с методом write (string). Если значение не задано, происходит вывод на экран;
flush
– если задано значение True
, поток принудительно сбрасывается. Значение по умолчанию: False
.
Эта функция выводит все, что у нее в скобках:
print(1)
print(1, 2, 3)
print('текст')
#1
#1 2 3
#текст
А также любые типы данных:
my_list = ['один', 'два', 'три']
my_bool = True
a = 1234
print(my_list)
print(my_bool)
print(a)
#['один', 'два', 'три']
#True
#1234
И выражения:
a = 5
b = 5
print(1 + 2)
print(a / b)
print('hello' + ' ' + 'world')
#3
#1.0
#hello world
Sep — сокращенно separator — разделитель (по умолчанию это пробел), с его помощью разделяем объекты вывода любыми символами и строками.
print(1, 2, 3, 4, sep=' | ')
#1 | 2 | 3 | 4
print('https:/', 'fullstacker.ru', 'contacts', sep='/')
#https://fullstacker.ru/contacts
print(1, 2, 3, 4, sep='\n')
#1
#2
#3
#4
С его помощью можно предотвратить перенос строки в конце вывода, по умолчанию, как раз и стоит перенос строки, т.е. end='\n'
. Или же просто добавлять что-то к выводимому объекту в конце.
print('сделаем вывод')
print('в одну')
print('строку')
#сделаем вывод
#в одну
#строку
print('сделаем вывод', end=' ')
print('в одну', end=' ')
print('строку')
#сделаем вывод в одну строку
Эти параметры можно совмещать:
a = 'На старт'
b = 'внимание'
c = 'марш'
print(a, b, c, sep=', ', end='!')
#На старт, внимание, марш!
С помощью этого параметра мы можем вывести информацию не на экран, а в файл:
my_file = open('test.txt', 'w')
print('Запишем строку в файл!', file = my_file)
my_file.close()
В результате в файл test.txt будет записана строка Запишем строку в файл!
. Если файла test.txt не было, то он будет создан.
Допустим нам нужно вывести что-то, что содержит в себе много переменных, стандартным способом это будет выглядеть так:
name = 'Роман'
age = '7'
level = '1'
school = '6'
print('Имя: ', name, '. ', 'Возраст: ', age, ' лет. Ученик ', level, ' класса. СОШ №', school, '.', sep='')
#Имя: Роман. Возраст: 7 лет. Ученик 1 класса. СОШ №6.
Не очень удобно и код читается так себе.
В этом случае нам помогут f-строки. Перед объектом вывода ставим букву f и далее в фигурных скобках указываем переменные, которые нужно вывести:
name = 'Роман'
age = '7'
level = '1'
school = '6'
print(f'Имя: {name}. Возраст: {age} лет. Ученик {level} класса. СОШ №{school}.')
#Имя: Роман. Возраст: 7 лет. Ученик 1 класса. СОШ №6.
Так гораздо удобнее.
За ввод пользовательских данных с клавиатуры в Python отвечает функция input()
.
input([prompt])
Когда интерпретатор доходит до функции input()
, выполнение программы останавливается и ожидается ввод данных от пользователя.
Пользователь вводит данные, нажимает Enter
, программа продолжает по алгоритму.
name = input()
print(f'Привет, {name}!')
#Саша
#Привет, Саша!
С клавиатуры мы вводим Саша, эта информация присваивается переменной name
и далее Python функцией print()
выводит приветствие, используя переменную с веденными ранее данными.
У функции input()
есть необязательный параметр prompt
— он служит подсказкой и отображается перед вводом данных:
name = input('Введите свое имя: ')
print(f'Привет, {name}!')
#Введите свое имя: Александр
#Привет, Александр!
Теперь при вводе данных будет написано Введите свое имя:
и далее переложение ввести имя.
Я уже писал подробно о типах данных в Python, здесь разберем только преобразования в input().
По умолчанию, все данные, которые вводятся через функцию print()
— строки:
a = input()
print(type(a))
#10
#<class 'str'>
Даже если мы введем числа, то это будут строки, и работать с ними как с числами мы не сможем:
a = input()
b = input()
print(a + b)
#1
#2
#12
Мы ввели числа 1 и 2, далее функцией print()
хотели вывести сумму чисел, но получили 12. Все потому, что это строки и происходит конкатенацией или объединением, вместо числового сложения.
Для преобразования строк в числа нужно пользоваться функциями.
Input() → int преобразование в целое число
Для того, чтобы получить целое число, введенное в функцию ввода данных, нужно пользоваться функцией int()
:
a = int(input())
b = int(input())
print(a + b)
#1
#2
#3
Мы ввели числа, 1 и 2, как и в предыдущем примере, но с помощью функции int()
мы преобразовали их в числа и в итоге получили сумму этих чисел.
Input() → float преобразование в дробные числа (вещественные)
Для этого используем функцию float()
, также, как и в предыдущем примере:
a = float(input())
b = float(input())
print(a + b)
#1.5
#2.5
#4.0
Рассмотрим практическое применение этих функций на простых задачах.
Рассчитаем периметр прямоугольника
Пользователю необходимо ввести длину и ширину прямоугольника (целые числа), на выходе рассчитать периметр прямоугольника:
width = int(input('Введите длину прямоугольника: '))
height = int(input('Введите ширину прямоугольника: '))
p = (width + height) * 2
print(f'Периметр прямоугольника: {p}')
#Введите длину прямоугольника: 10
#Введите ширину прямоугольника: 20
#Периметр прямоугольника: 60
С помощью функции input()
получаем данные от пользователя, преобразуем их функцией int()
в целые числа и присваиваем переменным width
и height
.
По формуле периметра прямоугольника P=(a+b)*2
, вычисляем периметр и присваиваем это значение в переменную p
.
Выводим результат с помощью функции print()
.
Предложить пользователю решить пример
Есть пример 4 * 100 — 100, получить ответ от пользователя и сравнить с правильным.
print('Решите пример 4 * 100 - 100')
a = int(input('Ваш ответ: '))
if a == 300:
print('Ответ правильный, 4 * 100 - 100 = 300')
else:
print(f'Ответ {a} неверный. Правильный ответ: 4 * 100 - 100 = 300')
#Решите пример 4 * 100 - 100
#Ваш ответ: 300
#Ответ правильный, 4 * 100 - 100 = 300
Первой функцией print()
выведем пример и предложим его решить. Далее запрашиваем ответ с помощью функции input()
, приводим его к целому числу и присваиваем переменной a
.
Создаем условие, если ответ пользователя правильный — выводим Ответ правильный, 4 * 100 - 100 = 300
, если ответ пользователя неправильный, то выводим его ответ и показываем правильный.
Содержание: