Заняття 5
До моменту вивчення циклів у школі програмування для багатьох школярів є чимось складним, вони не розуміють переваг комп’ютера над тими самими діями, виконаними «вручну». Звичайно, швидше учні розв’яжуть задачі на слідування та розгалудження вручну, ніж напишуть програму і побачать результат роботи на екрані. Саме цикли показують переваги програмування над самостійним розв’язуванням задачі. Отже, цикли …
Цикл «перелік» записується так:
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) Джерело
Немає коментарів:
Дописати коментар