Цикли з передумовою

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

Цикл з передумовою у вигляді блок-схеми:

Блок схема
Синтаксис мовою Python:
while  <умова>:
    <Команди для виконання>
Виконання циклу while починаємо з введення початкових значень змінних. Далі виконуємо цикл: перевіряємо виконання умови, якщо умова істинна, виконуємо команди циклу та повертаємось знову до перевірки умови. Якщо умова хибна, виходимо з циклу та виконуємо наступну команду після циклу.
Якщо відразу умова хибна, то цикл не виконується. 
Цикли з передумовою

       Цикли з передумовою

Завдання з циклом  while:

Завдання 1. Вводити з клавіатури числа, поки не введемо нуль.

a=int(input("Введіть число "))

while (a!=0):

    a=int(input("Введіть число "))

print ("The End")


Завдання 2. Генерувати випадкові числа від 1 до 6, поки не випаде 1

import random

a = 0

while (a != 1):

    a = random.randint(1, 6)

    print(a)

print ("The End")


 

Завдання 3. Порахувати, скільки чисел генерує комп'ютер, поки не отримає випадкове число 100 в діапазоні від 1 до 100

import random

a = 0 

k = 0

while (a!=100):

    a=random.randint(1,100)

    print(a, end='  ')

    k = k + 1

print ("к=", k)


Завдання 4. Порахувати, скільки парних і непарних чисел генерує комп'ютер, поки не отримає випадкове число 100 в діапазоні від 1 до 100.

import random

a = 0

k = 0

n = 0

while (a!=100):

    a=random.randint(1,100)

    print(a, end='  ')

    if(a%2==0):

        k=k+1

    else:

        n=n+1

print ("Парних=", k)

print ("Непарних=", n)

 


Завдання 5.  Знайти суму цифр числа n.

n = int(input('Введіть число '))
s = 0
while n > 0:
    d = n % 10 
    s = s + d
    n = n // 10
print('s = ', s) 


Завдання 6. Вкладник поклав до банку 5000 грн. під 20 % річних. Через скільки років сума вкладу подвоїться?

s = 5000
n = 0
while s < 10000:
    n = n+1
    s = s + s * 0.20
    print('s = ', round(s, 2)) # Значення s виводиться з двома знаками після коми.
print(' Через', n, 'роки буде ', round(s, 2), 'грн')

В циклах, іноді треба виконувати дії з отримання суми або добутку чисел. Для цього використовуються накопичувачі. Прикладом такого накопичувача є лічильник (рахує кількість кроків циклу), який збільшує своє значення на одиницю з кожним разом виконання циклу. Для таких накопичувачів необхідна змінна, яка має початкове значення 0 для створення суми чисел і початкове значення 1 для знаходження добутку (змінна створюється до початку циклу).

Завдання 7. Створити програму, яка буде обчислювати суму натуральних чисел 1+2+3+...+n та буде виводити її на екран.

n = int(input('введіть кількість чисел  '))

i = 0

sum = 0

while i < n:

    i = i + 1

    sum = sum + i

else:

    print('Сума', n, 'чисел =', sum)


Завдання 8. Дідусь Василь n днів ходив у ліс по гриби. Першого дня він знайшов 11 гибів, другого 20, третього 29. Кожного дня грибів стабільно збільшувалось. Скільки всього грибів зібрав досвідчений грибник? 

(Перевірка:  n = 3 sym = 60, n = 5 sym = 145)

n=int(input('Введіть кількість днів n='))

sym=0

x=11

i=1

while i<=n:

    sym=sym+x

    x=x+9

    i=i+1

print ( 'sym=', sym   )

Введемо змінні:

sym – загальна кількість грибів; 
x – кількість грибів, знайдена певного дня;
i – лічильник днів.

   Початкове значення загальної кількості грибів sym=0 (ми ще нічого не рахували). У перший день дідусь знайшов 11 грибів, тому x=11.

   Відлік днів ведемо, починаючи з 1, тому i=1. Цикл виконуємо, поки лічильник днів i не досягне заданої кількості днів n (i<=n). Щодня сума знайдених грибів sym збільшується на x, тобто sym=sym+x.

   Неважко помітити, що 20-11= 29-20= 9, тобто щодня грибник знаходив на 9 грибів більше. Тому щоденна кількість грибів x=x+9.

 Завдання 9. Ведмедик Вінні Пух дуже полюбляє мед і хоче, щоб бджоли збирали його якомога більше. Мудра Сова порадила йому посіяти на галявині квіти фацелії, які є чудовим медоносом.

   Ведмедик весною посіяв 1 зернину. Влітку рослина зацвіли, а восени Вінні Пух зібрав 5 насінин.

  Наступного року кожна з 5 посіяних зернин потішила ведмедика пишним цвітом та 7 насінинами врожаю. Тобто восени 2-ого року Вінні Пух мав вже 35 зернин.

   Скільки насінин матиме любитель меду через N років?

n=int(input('Введіть кількість днів n='))

k=1

m=5

i=1

while i<=n:

    k=k*m

    m=m+2

    i=i+1

print ('k=', k )  

Введемо змінні:
     
 лічильник років;
     m 
 кількість зернят, які з’явились на кінець року на кожній рослині;
     
 загальна кількість насінин, яку в поточному році спочатку посіяв, а потім зібрав Вінні Пух.

   Відлік років ведемо з першого, тому i=1. Працюватимемо, поки лічильник років i не перевищить заданої кількості років N (i<=N).

   Першого року було посіяно 1 зернятко, тому k=1. На кінець року на рослині з’явилось 5 насінин, тому m=5

   Щоб знайти кількість зернин, отриманих восени, потрібно посаджену кількість рослин помножити на кількість насінин на кожній із них m, тобто k=k*m (кількість зернин збільшується у m разів).

   Неважко помітити, що врожайність рослин щороку зростає на 2 зернини, тому m=m+2.

Завдання 10: Cтворити програму, яка задане ціле число перетворює на число, записане навпаки.

 Наприклад, при введенні числа 123 отримуємо 321. Для початку потрібно ввести число А та задати додаткову змінну, у котру будуть записуватись змінені числа. Цикл будемо виконувати доти, доки число А буде більшим за 0 (в майбутньому саме його ми будемо ділити на 10 та виводити лише цілу частину). Якщо умова буде хибна то відразу виведемо N=0. Якщо ж A>0 то у змінну Z запишемо число, що дорівнюватиме частці чисел А та 10 по модулю. У змінну А запишемо ціле число від ділення на 10. Число N помножимо на 10 і до отриманого значення додамо Z. Повторюючи такі дії ми зможемо досягти «розвороту» числа.


Завдання 11. Реалізуйте гру «Вгадай слово». Задумати число від 1 до 20. Користувач за 4 спроби має його відгадати. Якщо відгадує, то появляється повідомлення «Молодець!», якщо ні то користувачеві повідомляється, більше чи ні це число від загаданого.


import random

print('Гра вгадай число')

число_пк = random.randint(1,20)

спроб = 1

число_користувача = 0

while (спроб <= 5) and число_користувача != число_пк:

    print('**** Спроба - ', спроб, '****')

    число_користувача = int(input('Введіть число '))

    if число_користувача > число_пк:

        print('Комп\'ютер: "Я загадав меше число" ')

    if число_користувача < число_пк:

        print('Комп\'ютер: "Я загадав більше число" ')

    спроб = спроб + 1

if число_користувача != число_пк:

    print('Комп\'ютер: "Вибач, та ти програв! Моє число було -', число_пк, '" ')

else:

    print('Комп\'ютер: "Молодець! Ти відгадав моє число.')

Цикли з передумовою

Перевірка: 

Завдання 12. Знайти всі дільники числа а.

n = int(input('Введіть число n =  '))

i = 1

while i <= n:

    if n % i == 0:

        print(i,  end = '  ')

    i += 1





 


 





Коментарі