Цикл для Python
Цикл у будь-якій мові програмування - це багаторазове виконання однієї й тієї ж дії. Цикл for проходить по даній послідовності елементів. Він складається з двох компонентів: змінної (змінних) циклу та ітерованої (перебирається) послідовності. Наведу приклад:
for i in 'one' , 'two' , 'three' :
print (i)
# one
# two
# three
Наведу ще кілька прикладів:
for i in '1' , 'hello' , 2 , 1990 , True, False:
print (i)
for j in 'orange' , 'red' , 'purple' :
print (j)
for k in 'first' , 'last' :
print (k)
Функція range()
Тепер настав час познайомитися із вбудованою в Python функцією range(). "range" перекладається як "діапазон". Вона може приймати один, два чи три аргументи. Якщо заданий лише один, то генеруються числа від 0 до вказаного числа, не включаючи його. Якщо задані два, числа генеруються від першого до другого, не включаючи його. Якщо задані три, то третє – це крок. Розглянемо випадок з одним аргументом:
for number in range ( 5 ):
print (number)
for number in 0 , 1 , 2 , 3 , 4 :
print (number)
Надрукуються числа від 0 до 4. Це з тим, що функція range з одним аргументом генерує діапазон від 0 до n-1, де n - це передано аргумент.
Передамо у функцію два аргументи: 5 і 10. У цьому випадку range згенерує послідовність чисел від 5 до 9.
for el in range ( 5 , 10 , 2 ):
print (el)
Якщо передати в range три аргументи: 5, 10, 2, ми отримаємо послідовність від 5 до 10 з кроком в 2
for el in range ( 5 , 10 ):
print (el)
Перебір рядків та функція len()
З допомогою циклу for ми можемо перебрати будь-яку послідовність, наприклад, рядок:
for letter in 'hello' :
print (letter)
for l in 'python' :
print (l)
Будь-яка послідовність має довжину, це означає, що ми можемо її порахувати
Приклади розв'язання задач
1. Порахувати суму чисел від 0 до number
number = int (input())
summa = 0
for i in range (number +1 ):
# summa = summa + i
summa += i
print (summa)
2. Порахувати суму парних чисел від 0 до number
number = int (input())
summa = 0
for i in range (number +1 ):
if i % 2 == 0 :
# summa = summa + i
summa += i
print (summa)
3. Порахувати добуток чисел від 1 до number
number = int (input())
multi = 1
for i in range ( 1 , number +1 ):
multi *= i
print (multi)
Розв'язання задач
1. Вивести числа від 0 до 10.
2. Вивести числа від 0 до n, де n – це випадкове число або число, введене з клавіатури
3. Вивести непарні числа в діапазоні від 0 до n (діапазон – це послідовність чисел від 0 до n)
4. Вивести парні числа із діапазону від 0 до n.
5. Вивести числа, що діляться на три без залишку, в діапазоні від 0 до n.
6. Вивести числа, що діляться на три або сім без залишку, в діапазоні від 0 до n.
7. Знайти суму всіх чисел від 1 до n.
7. Знайти суму парних чисел від 1 до n.
8. Дано два цілі числа a і b a . Знайти суму всіх цілих чисел від a до b включно.
9. Знайти суму чисел від 1 до n, що діляться на 3 .
10. Дано ціле число n. Знайти суму 1+1/2+1/3+. + 1/n
11. Дано ціле число n. Знайти суму 1 + 2 + 4 + 8 + 16 +. + 2**n
де 2**n – це 2*2*2*. *2 разів. Таким чином, 2**4 = 2*2*2*2. Операція ** називається операцією зведення у ступінь.
12. Дано ціле число n. Знайти суму: 1.1+1.2+1.3+. + (1 + 0.1 * n)
13. Дано ціле число n. Знайти значення виразу 1.1 − 1.2 + 1.3 − . (N доданків, знаки чергуються).
14. Дано ціле число n. Знайти квадрат даного числа, використовуючи для обчислення таку формулу: n**2 = 1 + 3 + 5 + . + (2*N − 1) Після додавання до суми кожного доданка виводити поточне значення суми
15. Дано дійсне число A та ціле число N (> 0). Знайти A у ступені N: A ** N = A * A * . * A (числа A перемножуються N разів). Операцію ** не використовувати.
16. За цим натуральним n ≤ 30 виведіть драбинку з n сходинок, i-я сходинка складається з чисел від 1 до i без пробілів.Перегляньте статтю про введення та виведення даних.
17. Дано ціле число n. Знайти суму 1**1+2**2+. + n**n.
Цикл while
Цикл while (“поки”) дозволяє виконати одну й ту саму послідовність дій, доки перевіряється умова істинно. Умова записується до тіла циклу та перевіряється до виконання тіла циклу. Як правило, цикл while використовується, коли неможливо визначити точне значення кількості проходів виконання циклу.
i = 0
while i 5 :
print (i)
i += 1
Цикл while та цикл for мають схожу структуру, АЛЕ є одна важлива відмінність - цикл while може бути нескінченним.
i = 0
while True :
print (i)
i += 1
# Висновок:
>>> 0
>>> 1
>>> 2
>>> 3
>>> 4
# Це може тривати довго.
Код вище буде нескінченно друкувати зростаючу послідовність чисел.
Цикл while можна порівняти із циклічним умовним оператором.
text = 'Hello world'
i = 0
while i len (text):
print (text[i])
i += 1
Код, наведений вище, друкує рядок посимвольно. Наведу приклад аналогічного циклу for:
text = 'Hello world'
for i in text:
print (i)
Більше того, я наведу навіть два цикли для!
text = 'Hello world'
for i in range (len (text)):
print (text[i])
Нагадаю, що відмінність між двома, наведеними вище прикладами, в наступному: перший цикл проходить за елементами послідовності (у нашому випадку рядки), а другий - за її індексами. Тут також використовується функція len(), яка дозволяє дізнатися про довжину послідовності.
Повернемося до циклу while. Цикл while, як і цикл for, можна зупинити за допомогою спеціальної керуючої конструкції break.
j = 0
while True :
if j == 3 :
print ( 'Вихід із циклу')
break
print (j)
j += 1
Конструкція break перериває цикл. Вона дуже схожа на нормальну умову після ключового слова while.
Також є ще одна керуюча конструкція - continue. З її допомогою ми можемо не виконати поточну ітерацію (повторення) циклу і перейти одразу до наступного.
j = 0
while j 5 :
j += 1
if j == 3 :
print ( 'Пропускаємо j == 3')
continue
print (j)
Як і для циклу for, для циклу while ми можемо записати конструкцію else.
from random import randint
j = 0
element = randint ( 0 , 15 )
while j 10 :
j += 1
if j == element:
print ( 'Знайшли element, він дорівнює' , element)
break
else :
print ( 'Невдала спроба' )
Приклади розв'язання задач
Зведення числа в ступінь за допомогою циклу while
n = int (input()) # число
k = int (input()) # ступінь
i = 1 # поточний ступінь
result = 1
while i k:
result *= n
i += 1
print (result)
Сума послідовності за допомогою циклу while
n = int ( input ())
result = 0
i = 0
while i n:
result += i
i += 1
print (result)
Введення послідовності чисел
i = 0
while True :
n = input()
if n == 'end' :
print ( 'Введення закінчено')
print ( 'Було введено' , i, 'чисел' )
break
n = int (n)
i += 1
Сума введених чисел
i = 0
summa = 0
while True :
n = input()
if n == 'end' :
print ( 'Введення закінчено')
print ( 'Було введено' , i, 'чисел' )
print ( 'Їх сума дорівнює', summa)
break
n = int (n)
summa += n
i += 1
Розв'язання задач
1. Дано позитивне число N. Вивести усі числа від 0 до N за допомогою циклу while.
2. Дано позитивне число N. Вивести усі числа від N до 0 за допомогою циклу while. Приклад:
3. Дано два позитивні числа K і N (K 4. Дано позитивні числа A і B (A > B). На відрізку довжини A розміщено максимально можливу кількість відрізків довжини B (без накладень). Не використовуючи операції множення та поділу, знайти довжину незайнятої частини відрізка A (взяття залишку A % B)
5. Дано позитивні числа A і B (A > B). На відрізку довжини A розміщено максимальну кількість відрізків довжини B (без накладень). Не використовуючи операції множення та поділу, знайти кількість відрізків B, розміщених на відрізку A (поділ націло A // B)
6. Дано позитивне число N. Знайти суму всіх парних чисел від 0 до N за допомогою циклу while.
7.Дано два позитивні числа K і N (K непарних чисел від K до N за допомогою циклу while.
8. Дано позитивне число N. Знайти факторіал числа N. Факторіалом числа називається добуток усіх чисел від 1 до N. Наприклад, факторіал числа 5 дорівнює 5! = 1 * 2 * 3 * 4 * 5 = 120, 2! = 1 * 2 = 2, 9! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 = 362880
9. Дано ціле число N(>0). Якщо воно є ступенем числа 3, вивести YES, якщо не є - вивести NO.
10. Дано ціле число N(>0). Знайти подвійний факторіал N: N!! = N * (N-2) * (N-4) * . . Для вирішення цього завдання подивіться на задачу 2
Складні завдання
1. Дано ціле число N (>1). Знайти найменше ціле число K, у якому виконується нерівність 3^K > N, де 3^K - це 3 ступенем K чи число 3, помножене саме він K раз. Наприклад, 3^5 = 3*3*3*3*3. Відповіддю в завданні буде перший ступінь числа 3, який більший за задане число N. Наприклад, якщо N=41, розпишемо ступеня числа три: 3^1 = 3; 3^2 = 3 * 3 = 9; 3^3 = 3 * 3 * 3 = 27; 3^4 = 3 * 3 * 3 * 3 = 27 * 3 = 81; . Таким чином, перший ступінь, у який звести число 3, що перевищує число N - це 4.
У цій задачі потрібно виконувати цикл while, поки залишок від поділу на число три дорівнює 0
2. Дано ціле число N(>0). Використовуючи операції поділу націло і взяття залишку від поділу, вивести всі його цифри, починаючи з правої (розряду одиниць).
Перед розв'язанням цього завдання згадайте, як знайти суму цифр тризначного числа.
3. Дано цілі позитивні числа A і B. Знайти їх найбільший спільний дільник (НОД), використовуючи алгоритм Евкліда: НОД(A, B) = НОД(B, A mod B), якщо B = 0; НОД(A, 0) = A.
4. Спортсмен-лижник розпочав тренування, пробігши першого дня 10 км. Кожен наступний день він збільшував довжину пробігу на P відсотків від пробігу попереднього дня (P - речовинне, 05. Дано ціле число N (> 1). Послідовність чисел Фібоначчі FK визначається наступним чином: F(1) = 1, F(2) = 1, F(K) = F(K-2) + F(K-1), K = 3, 4, . Перевірити, чи число N числом Фібоначчі.Якщо є, вивести TRUE, якщо ні - вивести FALSE.
6. Дано позитивні числа A, B, C. На прямокутнику розміру A x B розміщено максимально можливу кількість квадратів зі стороною C (без накладень). Знайти кількість квадратів, розміщених на прямокутнику. Операції множення та поділу не використовувати.
7. Дано ціле число N (> 1), яке є числом Фібоначчі: N = F(K). Знайти ціле число K – порядковий номер числа Фібоначчі N.
Отримання суми парних чисел у Python
Обчислення суми парних чисел – це базове, але важливе завдання у програмуванні, яка допомагає розвивати логічне мислення та розуміння циклів та умов. У Python існує кілька способів виконання цього завдання.
Сума парних чисел дипазону
Використання циклу For
Найпростіший спосіб обчислити суму парних чисел - використовувати цикл для ітерації по діапазону чисел і підсумовувати ті, які задовольняють умові парності.
def sum_even_numbers(n): total = 0 for i in range(1, n + 1): if i % 2 == 0: total += i # Додаємо число до суми, якщо воно парне return total number = 10 result = sum_even_numbers (number) print(f"Сума парних чисел дорівнює ")
Використання List Comprehensions та sum()
Python пропонує елегантний спосіб обчислення суми парних чисел за допомогою list comprehensions та вбудованої функції sum() .
def sum_even_numbers_comprehension(n): return sum([i for i in range(1, n + 1) if i % 2 == 0]) number = 10 result = sum_even_numbers_comprehension(number) print(f"Сума парних чисел )
Функціональне програмування з filter() та sum()
Цей метод поєднує в собі функціональне програмування та використання функцій filter() та sum() , щоб елегантно та ефективно обчислити суму.
def sum_even_numbers_functional(n): return sum(filter(lambda x: x % 2 == 0, range(1, n + 1)))) number = 10 result = sum_even_numbers_functional(number) print(f"Сума парних чисел )
Обчислення суми парних чисел у списку
На додаток до обчислення суми парних чисел у заданому діапазоні, часто виникає завдання знаходження суми парних чисел у списку.
Цикл For з умовою
Проходимо по всіх елементах списку, перевіряємо, чи є елемент парним, і якщо так, додаємо його до суми.
def sum_even_in_list(lst): total = 0 for i in lst: if i % 2 == 0: total += i # Додаємо парне число до суми return total numbers = [1, 2, 3, 4, 5, 6, 7 , 8, 9, 10] result = sum_even_in_list(numbers) print(f"Сума парних чисел у списку: ")
List Comprehensions з sum()
Цей метод використовує list comprehensions для створення нового списку лише з парних чисел і потім підсумовує його елементи.
def sum_even_in_list_comprehension(lst): return sum([i for i in lst if i % 2 == 0]) numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = sum_even_in_list_comprehen (numbers) print(f"Сума парних чисел у списку: ")
Використання filter() та sum()
Подібно до попереднього методу, але з використанням filter() для відбору парних чисел.
def sum_even_in_list_functional(lst): return sum(filter(lambda x: x % 2 == 0, lst)) numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = sum_even_in_list_function (numbers) print(f"Сума парних чисел у списку: ")
Висновок
Обчислення суми парних чисел у Python є чудовою вправою для розуміння основних концепцій мови, таких як цикли, умовні оператори та функціональне програмування.