вівторок, 4 лютого 2020 р.

Цикли в PYTHON

Заняття 5
До моменту вивчення циклів у школі  програмування для багатьох школярів є чимось складним, вони не розуміють переваг компютера над тими самими діями, виконаними «вручну». Звичайно, швидше учні розвяжуть задачі на слідування та розгалудження вручну, ніж напишуть програму і побачать результат роботи на екрані. Саме цикли показують переваги програмування над самостійним розвязуванням задачі. Отже, цикли …
На мові PYTHON є два види циклів: перелік і умовний. Розпочнемо з першого.
Цикл «перелік» записується так:
for i in range(n):
    тіло циклу
Змінна і пробігає значення певного діапазону записаного у функції range() і для кожного значення виконується деяка послідовність команд, яка називається тілом циклу. Як видно із запису, тіло циклу знаходиться правіше оператора for.
Розглянемо параметри функції range(). У наведеному записі змінна n задає інтервал від 0 до n-1 включно (всього n значень). Тобто, спочатку змінна і набуває значення 0 і для цього значення виконуються всі команди у циклі. Наступне значення змінної і є 1, потім 2, потім і т.д., поки не досягне значення 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, тобто xx+dx+2dx+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.
Звичайно, що умова циклу може бути як проста так і складна. Наприклад, для того щоб цикл повторювався, поки не дотягнеться певний результат, наприклад, поки позиція об’єкта (ij) не співпаде з координатою (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(xend=’ ‘)
Програма виведе число 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) Джерело




Немає коментарів:

Дописати коментар