Введення та виведення даних (функції input() та print())

До цього моменту вся цифрова інформація для програм, які виконують обчислення, вказувалася безпосередньо в коді. Настав час наділити наші програми здатністю введення (input) даних. Це процедура, що дозволяє вставити нову інформацію в уже працюючу програму. Дана процедура дозволяє писати більш різноманітні та цікаві програми, які взаємодіють з користувачем. В Python існує вбудована функція input (), призначена для отримання даних від користувача.

Функція input ()

Функція input () отримує від користувача рядок тексту. Зазвичай дані просто вводяться з клавіатури. Отже, до вже знайомим вам вбудованих Python-функцій str (), int (), float () і type (), які ми розглянули, додалася ще одна. Докладно про функції ми будемо говорити пізніше, а поки досить запам'ятати, що вставляючи їх в свої програми, ви повинні додавати круглі дужки.

Ось приклад застосування функції введення:

yourName = input()

Ця команда дає користувачеві можливість ввести рядок, якому буде присвоєно ім'я yourName. Вставимо її в програму. Створіть в IDLE новий файл і додайте туди код:

print("Як тебе звати?")
yourName =
input()
print("Привіт, ", yourName)

 Збережіть і запустіть цю програму в IDLE, щоб подивитися, як вона працює. Ви повинні отримати приблизно такий результат:

Як тебе звати?
Тарас
Привіт, Тарас

 Тут було використано дві функції – функція print() для виведення на екран пояснюючого тексту, а функція input() – для зчитування з клавіатури введеної користувачем відповіді. Але, це все можна зробити дещо простіше. Адже функція input() може сама виводити підказки для користувача. Наприклад:

yourName = input("Введіть своє ім'я: ")

 Тобто, для того щоб вивести підказку користувачеві достатньо написати її в дужках після input (якщо пояснення – це рядок, не забуваємо використовувати лапки). В даному випадку, функція input() виведе на екран повідомлення «Введіть своє ім’я: » та зупинить виконання програми до отримання відповіді користувача (до натиснення клавіші Enter).

Введіть своє ім'я: Тарас

З прикладу видно, що програма очікує введення даних у тому ж рядку де було виведено підказку користувачу. Але це не завжди зручно. Можна розділити рядки виведення та введення, використавши символ перенесення рядка – “\n”. Зокрема, використавши наступну структуру:

yourName = input("Введіть своє ім'я:\n")

 ми отримаємо результат у вигляді:

Введіть своє ім'я:
Тарас

 Складніше зчитувати значення змінних, якщо вони записані в одному рядку. Тут потрібно застосувати до зчитуваного рядка метод split (), який розділяє рядок на частини по одному або декільком пропускам (а також табуляції та іншим символам). Потім результат виконання цієї функції надамо  декільком змінним. Наприклад, якщо в рядку вводяться два числа через пробіл, то зчитати їх можна так:

>>> a,b = input().split()
125 325
>>> a
'125'
>>> b
'325'

 Аналогічно, можна зчитувати значення розділені будь якими символами. Для цього достатньо в дужках після методу split вказати необхідний символ:

>>> a, b, c, d = input().split(';')
12;45;25;32
>>> a
'12'
>>> b
'45'
>>> c
'25'
>>> d
'32'

 Якщо ж об’єднати всі вказані можливості для введення, можна отримати цікавий результат:

>>> dd, mm, yyyy = input("Введіть дату свого народження:\n").split(".")
Введіть дату свого народження:
10.08.1986
>>> print("Ви народилися:", dd, "числа", mm, "місяця", yyyy, "року!")
Ви народилися:
10 числа 08 місяця 1986 року!

 Але, як ми змогли вивести стільки інформації в одній стрічці? Виявляється print() також є вбудованою функцією Python. І так само як input() вона має ряд своїх властивостей.

Функція print()

Для виведення даних використовується функція print(), яка може виводити не тільки значення змінних, але і значення будь-яких виразів. Наприклад:

>>> print(2+8/23-45*2+12**3)
1640.3478260869565

 Також за допомогою функції print можна виводити значення не одного, а декількох виразів, для цього потрібно перерахувати їх через кому:

>>> print(14+8,12+36, 8*9)
22 48 72

 Використовуючи функцію print() можна виводити на екран будь які скомпоновані рядки тексту:

>>> a = 15
>>> b = 23
>>> print(a, '+', b, '=', a+b)
15 + 23 = 38

 По замовчуванню, замість коми між значеннями, які виводяться, вставляється пробіл. Це можна легко змінити використавши додатковий парамент sep функції print():

>>> print(1, 2, 3, 4, 5, 6, sep='-')
1-2-3-4-5-6

 Фактично, атрибут sep замінить стандартний пробіл на вказаний вами символ (або послідовність символів, але не забуваємо про використання лапок).

А якщо спробувати вивести кожне значення з нової стрічки. Хіба для цього потрібно буде писати щоразу нову функцію print() для кожного значення? Звичайно НІ. Достатньо в якості атрибуту sep вказати символ перенесення рядка “\n”:

>>> print(1, 2, 3, 4, 5, 6, sep='\n')
1
2
3
4
5
6

 Кожна наступна функція print() буде виводити задане значення з нового рядка. Фактично print() виводить вказане значення а після цього переводить курсор на наступний рядок. Це можна змінити використавши ще один атрибут функції print()end. В даному випадку, в якості його властивості ми вкажемо пропуск:

print("Мене", end = " ")
print("звати", end = " ")
print("Микола", end = " ")
print("Олександрович")

 наведений вище код виведе на екран наступний рядок:

Мене звати Микола Олександрович

 Також значення атрибута end можна замінити довільним символом або послідовністю символів. Наприклад змінимо попередній код, вказавши в якості властивості атрибута end послідовність символів “-!-“. Ось, що ми отримаємо в результаті виконання вказаного коду:

Мене-!-звати-!-Микола-!-Олександрович

 Також, використовуючи атрибут end та вказавши в якості властивості декілька символів перенесення рядка, ми можемо отримати необхідну кількість пустих стрічок:

print("Мене звати", end="\n\n\n")
print("Микола Олександрович")

 Використавши даний код ми отримаємо наступний результат:

Мене звати


Микола Олександрович

Введення чисел

Отже, тепер ви знаєте, як за допомогою функції input () здійснити введення рядка. А що робити, якщо вам потрібно ввести число? Втім, якщо ви читали попередню статтю, відповідь вам відома. Можна взяти функцію int () або float () і перетворити наданий вам функцією input () рядок в число. Це буде виглядати так:

a = input()
a =
float (a)

 Спочатку за допомогою функції input () ми отримуємо дані у вигляді рядка. А потім, застосувавши функцію float (), ми перетворюємо її в число. Втім, все це можна зробити і коротше, всього за один крок:

a = float(input())

 Цей рядок виконує ті ж самі дії. Отримує у користувача рядок і перетворює його в число. Але тепер для цього потрібно менше коду. 

Якщо ви хочете, щоб всі дані, які вводяться користувачем були цілими числами (без десяткових знаків), для перетворення можна задіяти функцію int ():

a = int(input())

 Але тут може виникнути помилка введення, коли користувач замість цілого числа введе дробове:

>>> a = int(input())
12.3
Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    a = int(input())
ValueError: invalid literal for int() with base 10: '12.3'

 Це сталося тому, що Python не знає як перетворити рядок з десятковою крапкою в ціле число. Вирішити дану проблему, можна спочатку перетворивши рядок в дійсне число, а вже потім в ціле, тобто:

a = float(input())
a =
int(a)

 Ту ж саму операцію ми можемо виконати в одному рядку коду:

>>> a = int(float(input()))
12.365
>>> a
12

 Тепер помилка відсутня, оскільки, ми спочатку виконали перетворення в дійсне число, а вже потім – в ціле.

А як бути, коли ми вводимо всі числа в один рядок? Можна по-черзі перетворювати змінні після їх зчитування:

>>> a, b = input().split()
12 23.65
>>> a = int(a)
>>> b = float(b)
>>> a
12
>>> b
23.65

 Тут, ми кожну змінну перетворили у потрібний тип даних. Якщо всі запитуванні змінні матимуть один тип, можна використати функцію map(), яка має два обов’язкових параметри: перший – тип даних, другий – рядок, який перетворюється:

a, b, c = map(int, input().split())

Використовуючи отриманні знання, напишемо невелику програму-калькулятор, яка виведе на екран результат виконання семи основних операцій над цілими числами. Числа запитуються в користувача з відповідним повідомленням.

Приклад програми:

a = int(float(input("Введіть перше ціле число:\n")))
b =
int(float(input("Введіть друге ціле число:\n")))
print(a, '+', b, '=', a+b)
print(a, '-', b, '=', a-b)
print(a, '*', b, '=', a*b)
print(a, '/', b, '=', a/b)
print(a, '**', b, '=', a**b)
print(a, '//', b, '=', a//b)
print(a, '%', b, '=', a%b)

Результат виконання:

Введіть перше ціле число:
12
Введіть друге ціле число:
32
12 + 32 = 44
12 - 32 = -20
12 * 32 = 384
12 / 32 = 0.375
12 ** 32 = 34182189187166852111368841966125056
12 // 32 = 0
12 % 32 = 12

 Для закріплення матеріалу:

 Задачі для самостійного виконання:

Вирішіть наступні завдання в інтерактивному режимі або написавши невелику програму:

1. Створіть в інтерактивному режимі (без додаткових повідомлень) дві змінні - одну для вашого імені, а другу для вашого прізвища. Потім за допомогою однієї інструкції print виведіть їх на екран в один рядок.

2. Напишіть програму, яка спочатку запитує ваше ім'я, потім ваше прізвище, а потім виводить на екран повідомлення з вашими особистими даними.

3. Напишіть програму, яка запитує розміри прямокутної кімнати (в сантиметрах) і виводить на екран площу килима, який закриває всю підлогу.

4. Напишіть програму, яка робить все перераховане в завданні 3, запитуючи вартість килима за квадратний метр. Після виведіть на екран наступні дані:

  • загальну площу килима в квадратних сантиметрах;
  • загальну площу килима в квадратних метрах (1 квадратний метр = 10 000 квадратних сантиметрів);
  • підсумкову ціну килима.

5. Напишіть програму для підрахунку дрібних грошей. Вона повинна питати:

  • «Скільки у вас монет по 50 копійок?»;
  • «Скільки у вас монет по 25 копійок?»;
  • «Скільки у вас монет по 10 копійок?»;
  • «Скільки у вас монет по 5 копійок?».

Після цього на екрані повинна з'явитися загальна сума.

6. Обчисліть добуток перших 20 натуральних чисел. Виведіть на екран обчислене значення.

7. Запишіть букву 'A' (латинську, велику) 100 разів поспіль. 

8. Запишіть слово 'Python' 100 раз поспіль. 

9. Число 179 записали 50 раз поспіль. Отримане 150-значне число піднесли до квадрату. Скільки вийшло?

10. Напишіть програму, яка вітає користувача, виводячи слово Hello, введене ім'я і розділові знаки за зразком (Hello, Harry!). Програма повинна зчитувати в текстову змінну значення і писати відповідне вітання. Зверніть увагу, що після коми повинен обов'язково стояти пробіл, а перед знаком оклику пробілу немає.

Використана література: