суббота, 24 сентября 2016 г.

Зчитування даних та виведення результату

Заняття 3
На цьому занятті ми навчимося зчитувати дані до програми. Для зчитування даних з клавіатури на мові PYTHON існує функція input(). Результат зчитування потрібно надати деякій змінній. Наприклад:
a=input()
Змінна а набуде значення рядка, введеного з клавіатури. Зверніть увагу, саме рядка, тобто змінна а є рядком. Якщо нам потрібно зчитати саме число, то потрібно за допомогою функції int() перевести цей рядок у ціле число. При цьому рядок не повинен містити інших символів крім цифр та знаків «+» і «-». Тобто програма буде містити два рядки:
a=input()
a=int(a)
Зверніть увагу, спочатку змінна а набуває значення рядкового типу, а потім набуває цілочисленого типу, тобто тип змінної може змінюватися під час виконання програми. В цьому полягає суттєва відмінність мови PYTHON від інших відомих мов, зокрема PASCAL чи C++. Саме тому в цій мові немає опису змінних. Але ці два рядки можна обʼєднати і записати так:
a=int(input())
Тобто результат зчитування переводиться до цілочисленого типу і записується у змінну а. Якщо спочатку потрібно вивести запитання, а відповідь на нього записати у змінну, то зміст питання записується у дужках функції input(). Наприклад, 
a=int(input("Введіть значення сторони квадрата"))
Якщо потрібно зчитати дві змінні, що записані у різних рядках, то два рази записуємо таку комбіновану функцію, але для двох різних змінних:
a=int(input())
b=int(input())
Якщо ж дві змінні записані у одному рядку через пробіл, то процес зчитування складніший. Приведемо приклад:
a, b = map(int, input().split())
Розберемося спершу із записом input().split(). Для функції input() є метод split(), який повертає список рядків, розрізаючи зчитуваний рядок по пробілах. Складно? Звичайно, складно, але тільки на початку вивчення PYTHON! Для тих, хто тільки починає вивчати програмування і не знайомий з іншими мовами програмування, можна просто запам’ятати такий спосіб зчитування, а розібратися можна буде пізніше. А для тих, хто знайомий з поняттям масивів та рядків, спробую пояснити. По-перше, поняття методу: це те, що можна робити з обʼєктом. Обʼєкт – це зчитуваний рядок, а процес розрізання – це метод. Метод дописується до обʼєкта через крапку. По-друге, за замовчуванням метод split розрізає даний рядок по пробілах на інші рядки. Якщо в дужках ми вкажемо інший символ, то розрізання відбудеться по ньому. Наприклад:
Дано рядок 12:04:23
Після команди
a, b, c = map(int, input().split(“:”))
змінна а набуде значення 12, змінна b набуде значення 4, а змінна с набуде значення 23.
По-третє, функція map(f,s) має два параметри: f – функція, яка виконується, s – список обʼєктів, для яких ця функція виконується.
Отже, спочатку зчитується рядок, який розбивається на інші рядки по пробілах. Список рядків, в PASCAL – це масив рядків, за допомогою функції int() переводиться у список чисел, які записуються у змінні a та b. Якщо ще незрозуміло, то при вивченні списків (масивів), все стане на свої місця :).
Якщо потрібно зчитати дійсне число, то використовуємо замість int функцію float(). Наприклад
a=float(input())
Розглянемо кілька прикладів.

Приклад 1.
Дано натуральне число. Вивести останню цифру цього числа.
Вхід                                                     Вихід
2341                                                      1
В цьому і наступних прикладах показано приклад вхідних і вихідних даних, тобто для введеного числа 2341 відповіддю буде 1. Приклад потрібен для кращого розуміння умови задачі і формату вхідних та вихідних даних.
Для того, щоб знайти останню цифру числа (число одиниць), достатньо знайти остачу від ділення даного числа на 10. Приклад програми:

a=int(input())
print(a%10)

Приклад 2.
Дано натуральне трицифрове число. Вивести суму цифр цього числа.
Вхід                                                     Вихід
538                                                      16
Останню цифру ми знаходити вже вміємо (див. приклад 1). Для знаходження числа сотень потрібно знайти цілу частку від ділення даного числа на 100. Для знаходження числа десятків можна знайти спочатку кількість десятків цього числа (двоцифрове число), а потім знайти його останню цифру. Після цього виводимо суму цих чисел. Приклад програми:
a=int(input())                                            зчитування числа
x=a//100                                                    число сотень
y=a//10%10                                               число десятків
z=a%10                                                     число одиниць
s=x+y+z                                                    сума цифр
print(s)                                                       виведення результату

Приклад 3.
 Дано кількість секунд, що пройшли від початку доби. Вивести покази електронного годинника у форматі h:mm:ss, де h – кількість годин (від 0 до 23), mm – двозначне число хвилин (від 00 до 59), ss – двозначне число секунд (від 00 до 59).
Вхід                                                     Вихід
122876                                                 10:07:56
Спочатку знайдемо число годин (частка від ділення на 3600), потім число хвилин (частка від ділення на 60 від остачі від ділення на 3600), потім число секунд (остача від ділення на 60). Врахуємо, що кількість годин не може бути більше 23, тому знайдемо остачу від ділення на 24. При виведенні числа хвилин та секунд, будемо виводити спочатку кількість десятків, а потім кількість одиниць. У функції print() поставимо розділювач sep=’’. Приклад програми:

a=int(input())
h=a//3600%24
m=a%3600//60
s=a%60
print(h, ‘:’, m//10, m%10, ‘:’, s//10, s%10, sep= ‘’)

Приклад 4.
В одному рядку через пробіл дані два дійсних числа – довжини сторін прямокутника. Вивести два числа через пробіл – площу і периметр прямокутника
Вхід                                                     Вихід
2.7 4                                                     10.8 13.4  
Приклад програми:

a, b=map(float, input().split())
s=a*b
p=2*(a+b)
print(s, p)

 На цьому завершуємо заняття 3. Наступного разу розглянемо оператори математичної логіки та розгалуження. До зустрічі.

11 комментариев:

  1. 236
    a=int(input())
    print(a%10)


    538
    a=int(input())
    x=a//100
    y=a//10%10
    z=a%10
    s=x+y+z
    print(s)


    При введенні цих записів не отримую результат. Висвітлюється пустий рядок, що не так?

    ОтветитьУдалить
    Ответы
    1. 236 - це приклад вхідних даний, до програми його писати не треба. Аналогічно 538. Не забуваємо, що це дві окремі програми

      Удалить
  2. Вибачте, а як перевірити чи працює програма?

    ОтветитьУдалить
    Ответы
    1. Після запуску програми (F5) у іншому вікні вводимо трицифрове число і натискуємо Enter. Одразу бачимо результат

      Удалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. Шановні відвідувачі блогу. Автор щиро вдячний Вам за схвальні відгуки цього блогу, але маю Вам повідомити, що втратив можливість надалі вести цей блог. Тому його робота продовжиться за новою адресою pythonforschool.blogspot.com, де викладений матеріал по вивченню PYTHON саме для учнів 8 класу з розбивкою задач на теми, викладенням теоретичного матеріалу з прикладами, списком задач для класної та домашньої роботи та підтримкої їх онлайн-перевірки. Буду радий Вас всіх бачити на оновленому блозі.

    ОтветитьУдалить
  5. А как проделать то же самое што в задаче 2.Зчотирицифровим числом???

    ОтветитьУдалить
  6. Як зробити задачу 2 тільки навпаки вводити суму цифр трицифрового числа,а вивести число

    ОтветитьУдалить
  7. на вході маемо дійсне число , яке записується у користувача . програма переаодить його в ціле та виводить результат допоможіть будь ласка розв'язати задачу

    ОтветитьУдалить
  8. Скласти програму, яка визначатиме, скільки відсотків від CBA приходиться:
    а) на A ; б) на B ; в) на C

    ОтветитьУдалить