понедельник, 26 сентября 2016 г.

Цикли в PYTHON

Заняття 5
До моменту вивчення циклів у школі  програмування для багатьох школярів є чимось складним, вони не розуміють переваг компютера над тими самими діями, виконаними «вручну». Звичайно, швидше учні розвяжуть задачі на слідування та розгалудження вручну, ніж напишуть програму і побачать результат роботи на екрані. Саме цикли показують переваги програмування над самостійним розвязуванням задачі. Отже, цикли …
На мові PYTHON є два види циклів: перелік і умовний. Розпочнемо з першого.
Цикл «перелік» записується так:
for i in range(n):
    тіло циклу
Змінна і пробігає значення певного діапазону записаного у функції range() і для кожного значення виконується деяка послідовність команд, яка називається тілом циклу. Як видно із запису, тіло циклу знаходиться правіше оператора for.
Розглянемо параметри функції range(). У наведеному записі змінна n задає інтервал від 0 до n-1 включно (всього n значень). Тобто, спочатку змінна і набуває значення 0 і для цього значення виконуються всі команди у циклі. Наступне значення змінної і є 1, потім 2, потім 3 і т.д., поки не досягне значення n, для якого цикл вже не виконується. У випадку запуску циклу не з нуля, то вводиться ще один параметр – початкове значення. Наприклад,
for i in range(3,n):
    тіло циклу
Значення змінної і розпочинається з 3, потім 4, і т.д. і закінчується n-1.
Якщо ввести ще один параметр, то отримаємо …Спробуйте зрозуміти самостійно :)
n=10
for i in range(3,n,2):
    print(i, end=’ ’)
Програма виведе результат:
3 5 7 9
Здогадалися? Змінна і змінює значення з певним кроком, який задається у третьому параметрі. Більш формально можна сказати так:
Функція range(x,y,d) задає інтервал від х до y-1 включно з кроком d, тобто x, x+d, x+2d, x+3d, поки не досягне значення, рівного y або більше, для яких вона не виконується. Якщо значення d<0, то повинно бути x>y. Наприклад, для виведення чисел від 100 до 1 потрібно записати так:
for i in range(100,0,-1):
    print(i, end=’ ’)

Розглянемо цикл з умовою. Цей цикл записується практично так само як і в PASCAL, тільки замість оператора do ставиться двокрапка
x=1
while x<10:
    print(x**2)
    x+=2
Програма виводить у окремих рядках квадрати непарних одноцифрових чисел. Зверніть увагу, що тіло циклу знаходиться правіше оператора while.
Звичайно, що умова циклу може бути як проста так і складна. Наприклад, для того щоб цикл повторювався, поки не дотягнеться певний результат, наприклад, поки позиція об’єкта (i, j) не співпаде з координатою (x, y), цикл запишеться так:
 while not(x==i and y==j):
    тіло циклу
Якщо під час виконання циклу потрібно відокремити окремий випадок, наприклад, не опрацьовувати його або вийти з циклу, то для цього використовуються оператори continue та break. Перший оператор переходить на початок циклу (до наступної ітерації), не опрацьовуючи дані, а другий виходить із циклу. Звичайно, для цих операторів всередині тіла циклу повинна прописана умова, для яких вона виконується.
Наприклад, при виведенні коренів рівняння (х^3+x^2-10x+8)/(x^2-6x+5)=0  в діапазоні [0;10] необхідно пропускати пошук і виведення кореня для тих випадків, коли знаменник дорівнює нулю, тому слід використати оператор continue.
for x in range(11):
    if x**2-6*x+5==0:
             continue
    if x**3+x**2-10*x+8==0:
             print(x, end=’ ‘)
Програма виведе число 2, бо  число 1 пропустить (знаменник дорівнює нулю), а корінь -4 не входить в область пошуку.
Коли ж потрібно зупинитися на відшукання лише одного кореня, то після його знаходження потрібно вийти із циклу за допомогою оператора break.
for x in range(-10,11):
    if x**2-6*x+5==0:
             continue
    if x**3+x**2-10*x+8==0:
             print(x, end=’ ‘)
                   break
Програма виведе число -4 і одразу вийде з циклу.
Розглянемо кілька прикладів.

Приклад 1.
Дано натуральне число n. Знайти n! (добуток всіх натуральних чисел, що не перевищує n, тобто 1*2*3*…*n).
Вхід                                              Вихід
6                                                    720

n=int(input())
p=1
for i in range(1,n+1):
    p*=i
print(p)

Приклад 2.
Дано натуральне число n. Знайти суму його цифр.
Вхід                                               Вихід
342                                                 9

n=int(input())
s=0
while n>0:
    s+=n%10           (знаходимо останню цифру і додаємо до суми)
n//=10                (відкидаємо останню цифру)
print(s)

Приклад 3.
Дано натуральне число n (n≤9). Вивести числові східці, у якій і-ий рядок складається із східців від 1 до і.
Вхід                                           Вихід
4                                                 1
                                                   12
                                                   123
                                                   1234

n=int(input())
for i in range(1,n+1):
    for j in range(1,i):
             print(j, end=’’)
    print(i)

Приклад 4.
Дано послідовність чисел по одному в кожному рядку, що закінчуються нулем. Знати середнє арифметичне їх значення. Число 0 обробляти не потрібно. Числа в послідовності є натуральними.
Вхід                                              Вихід
4                                                    5.5
5                                                
12                                              
1                                                
0

s=0
n=0
a=int(input())
while a!=0:
    s+=a
    n+=1
    a=int(input())
print(s/n)

На цьому закінчимо заняття, а на наступному розглянемо створення використання власних функцій. До зустрічі. 

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

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

    ОтветитьУдалить
    Ответы
    1. Доброго дня! Я не дуже зрозумів зміст питання: "чому ви розглядаєте списки з переліком ... ?". І в чому полягає цикл з лічильником?

      Удалить
    2. Ні, питання полягає в тому чому ви розповідаєте про цикли з перелік, яких не має в шкільній програмі, замість циклів з лічильником? Цикл з лічильник характеризується тим, що дія виконується певну n кількість разів.

      Удалить
    3. А чому цикл
      for i in range(n):
      # тіло циклу
      не є циклом з лічильником, адже він повторюється рівно n раз?

      Удалить
    4. Я не буду з вами сперечатися з цього приводу, так ви праві, але чому ви тоді не вказуєте про це у своїй статті, бо повторюсь цикли з переліком не вивчаються у шкільній програмі, а початківець який вчиться по вашому курсу не зможе знайти ні чого про потрібні йому за програмою цикли з лічильником.

      Удалить
    5. Для мене цикл "перелік" і цикл "з лічильником" тотожні поняття, тому я не звернув на те увагу, як саме вказано у програмі. Звернуть до всіх читачів: В цій статті розглянуто програмний матеріал 8 класу і поняття "цикл з лічильником" і "цикл перелік" вважати тотожними.

      Удалить
  2. Доброго дня! Підкажіть як правильно прочитати вираз а!=0

    ОтветитьУдалить
  3. а не дорівнює нулю (аналог до <> на Паскалі)

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

    ОтветитьУдалить
  5. If you're attempting to lose fat then you need to jump on this totally brand new custom keto meal plan diet.

    To create this keto diet, licenced nutritionists, personal trainers, and cooks united to develop keto meal plans that are powerful, convenient, price-efficient, and satisfying.

    From their grand opening in early 2019, 100's of people have already remodeled their figure and health with the benefits a certified keto meal plan diet can give.

    Speaking of benefits: in this link, you'll discover eight scientifically-confirmed ones given by the keto meal plan diet.

    ОтветитьУдалить
  6. Задано натуральне число n. Знайти суму чисел від 1 до n
    Помогите!

    ОтветитьУдалить
  7. Best Slots in New Jersey - Mapyro
    With over 안양 출장샵 80,000 slot machines, the Borgata Hotel Casino & Spa 구리 출장안마 has been recognized 경주 출장마사지 as one of the most 김포 출장샵 dynamic destinations 동해 출장안마 in the nation for more than 30

    ОтветитьУдалить
  8. Допоможіть мені будь-ласка Напишіть програму, яка друкує в дному рядку через пропуск усі парні числа від 1 до n (1 < n ≤ 100, n - ціле число, яке вводить користувач). Використайте оператор continue.

    Вхідні дані:

    2
    10
    7
    Вихідні дані:

    2
    2 4 6 8 10
    2 4 6


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