Ми вже зустрічалися з функцією 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 () передає введені дані в програму. Їх можна привласнити змінної. В цьому випадку інтерпретатор не виводить рядок відразу ж:
>>> answer = input () No, it is not.
В даному випадку рядок зберігається в змінної answer, і при бажанні ми можемо вивести її значення на екран:
>>> answer 'No, it is not.'
При використанні функції print () лапки опускаються:
>>> print (answer) No, it is not.
Куди цікавіше використовувати функцію input () в скриптах - окремо взятих файлах з кодом. Розглянемо таку програму:
При запуску програми, комп'ютер чекає, коли буде введена спочатку один рядок, потім друга. Вони будуть присвоєні змінним nameUser і cityUser. Після цього значення цих змінних виводяться на екран за допомогою форматированного виведення.
Вищенаведений скрипт далекий від досконалості. Звідки користувачеві знати, що хоче від нього програма? Щоб не вводити в замішання многозадачного биоробота, для функції input () передбачений спеціальний параметр-запрошення. Це запрошення виводиться на екран при виклику input (). Удосконалена програма може виглядати так:
Зверніть увагу, що в програму надходить рядок. Навіть якщо ввести число, функція input () все одно поверне його строкове представлення. Але що робити, якщо треба отримати число? Відповідь: використовувати функції перетворення типів.
В даному випадку за допомогою функцій int () і float () строкові значення змінних qtyOranges і priceOrange перетворюються відповідно в ціле число і дійсне число. Після цього нові чисельні значення присвоюються тим же змінним.
Програмний код можна скоротити, якщо перетворення типів виконати в тих же рядках коду, де викликається функція input ():
qtyOranges = int (input ( "Скільки апельсинів?")) priceOrange = float (input ( "Ціна одного апельсина?")) sumOranges = qtyOranges * priceOrange print ( "Заплатіть", sumOranges, "руб.")
Спочатку виконується функція 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. Потім виводила б на екран правильну відповідь і відповідь користувача. Подумайте, чи потрібно тут перетворювати рядок в число.
Запитайте у користувача чотири числа. Окремо складіть перші два і окремо другі два. Розділіть першу суму на другу. Виведіть результат на екран так, щоб відповідь містив дві цифри після коми.
Приклади розв'язання в android-додатку і pdf-версії курсу.
Звідки користувачеві знати, що хоче від нього програма?Але що робити, якщо треба отримати число?
Скільки апельсинів?
Ціна одного апельсина?
Наприклад, "What is your name?
How old are you?
Where are you live?