WHILE структурата нема бројач, но има услов. Тој услов овозможува да се повторуваат наредбите, се додека условот е исполнет. Ако условот не е исполнет, не се повторуваат наредбите.
Додека условот е исполнет:
- Изврши ја наредбата1 Говорен јазик
- Изврши ја наредбата2
- ...
WHILE услов:
- Блок наредби1 Python програмски јазик
- Блок наредби2
- ...
WHILE структурата е многу едноставна и овозможува повторување само кога одреден услов е исполнет. Условот во WHILE може да биде одреден со оператори за споредување, логички оператори и со аритметички оператори.
Пример1:
Напиши програма со која на корисникот ќе му се даде можност за погодување на лозинката. Можноста за погодување на лозинката ќе се повторува се додека корисникот не ја погоди лозинката. Кога корисникот ќе ја погоди лозинката да се испише „Внесовте точна лозинка“, а во спротивно да се каже дека лозинката е грешна и да се повтори внесувањето.
Приказ ако лозинката е точна:
Vnesite lozinka: tajna
Vnesоvte tocna lozinka
Приказ ако лозинката не е точна:
Vnesete lozinka: cajna
Vnesovte pogresna lozinka - obidete se povtorno
Vnesete lozinka:
Решение:
password=' '
while password != 'tajna':
password=input('Vnesete lozinka: ')
if password=='tajna':
print('Vnesovte tocna lozinka')
else:
print('Vnesovte pogresna lozinka - obidete se povtorno')
Во решението на местото за while условот е користен операторот за споредување !=. Програмата повторува “внесете лозинка“ толку долго колку што е потребно додека условот во while циклусот не се исполни, односно password=="tajna".
Погледнете го видеото за овој пример:
Погледнете го видеото за овој пример:
Пример2:
Направете програма која ќе му овозможи на корисникот да погодува броеви. Ако одбереме 0, се прекинува програмата. Прекинот на програмата ќе се направи со командата break. Ако корисникот впише точен број, ќе се испише порака дека е погодени бројот. Ако корисникот напише поголем или помал број од бараниот, да се испише порака до корисникот дека внесениот број е поголем или помал од бараниот и така додека корисникот не одбере (нула) 0.
Пример на приказ:
Igra za pogoduvanje broj
Za prekin na igrata vnesete 0
Vnesete broj: 5
Brojot e pomal od zadadeniot, obidete se povtorno
Vnesete broj: 18
Brojot e pogolem od zadadeniot, obidete se povtorno
Vnesete broj: 17
Go pogodivte dadeniot broj, cestitki
Vnesete broj:
Решение1:
print ('Igra za pogoduvanje broj')
print ('Za prekin na igrata vnesete 0')
pogodi=17
while 1:
broj=int(input('Vnesete broj: '))
if broj==pogodi:
print('Go pogodivte dadeniot broj, cestitki')
elif broj==0:
break
elif broj>pogodi:
print('Brojot e pogolem od zadadeniot, obidete se povtorno')
elif broj<pogodi:
print('Brojot e pomal od zadadeniot, obidete se povtorno')
Решение2:
pogodi = random.randint(1,100)
Варијаблата pogodi е поставена фиксно на 17. Тоа е бројот што корисникот треба да го погоди. Во while условот е поставен на 1, што всушност значи true. Таа единица (1) во условот значи дека ако внесеме било кој број кој не е нула, ќе се извршуваат наредбите во while. Кога корисникот одбере 0, тоа е исто како да одбрал false, односно програмата се прекинува. Прекинот е овозможен од наредбата break. Наредбата break има само една функција: прекин на програмата на одредено место на кое програмерот ја поставил.
Решение2:
print ('Igra za pogoduvanje broj')
print ('Za prekin na igrata vnesete 0')
import randompogodi = random.randint(1,100)
while 1:
broj=int(input('Vnesete broj: '))
if broj==pogodi:
print('Go pogodivte dadeniot broj, cestitki')
elif broj==0:
break
elif broj>pogodi:
print('Brojot e pogolem od zadadeniot, obidete se povtorno')
elif broj<pogodi:
print('Brojot e pomal od zadadeniot, obidete se povtorno')
Што е разликата меѓу првото и второто решение? Дали варијаблата pogodi има фиксна вредност? Во кој интервал може да се движи pogodi? Кое решение е подобро и поинтересно за тие што ќе погодуваат?
Размисли и одговори!
Погледни го видеото пример2:
Пример3:
Програмата треба да бара од корисникот да внесе број во интервал од 10 до 20. Доколку корисникот внесе таков број, да се напише “Cestitame - vnesovte broj vo baraniot interval“. Ако корисникот не внесе број од тој интервал, да се испише: “Brojot ne e vo intervalot od 10 do 20, obidete se povtorno“. Циклусот да се извршува толку долго се додека условот е на TRUE, односно додека корисникот внесува броеви поголеми од нула. Ако корисникот внесе 0 односно False, се прекинува програмата.
Приказ на излезот:
Решение:
while True:
broj = int(input('Vnesete broj vo intervalot od 10 do 20: '))
if broj>=10 and broj<=20:
print('Cestitame - vnesovte broj vo baraniot interval ', broj)
elif broj==False:
break
else:
print('Brojot ne e vo intervalot od 10 do 20')
print('Obidete se povtorno')
Во условот можевме наместо True да напишеме еден (1). И во двата случаи тоа значи дека програмата се прекинува само кога ќе внесеме нула (0).
Погледнете го видеото за пример3:
Задача за дома:
Напишете програма која ќе внесува број во интервал од 30 до 50. Ако е точно да се напише порака “Brojot e vo baraniot interval“, а ако не е, да напише порака “Obidete se povtorno, brojot ne e vo baraniot interval!“
Што е разликата меѓу првото и второто решение? Дали варијаблата pogodi има фиксна вредност? Во кој интервал може да се движи pogodi? Кое решение е подобро и поинтересно за тие што ќе погодуваат?
Размисли и одговори!
Погледни го видеото пример2:
Пример3:
Програмата треба да бара од корисникот да внесе број во интервал од 10 до 20. Доколку корисникот внесе таков број, да се напише “Cestitame - vnesovte broj vo baraniot interval“. Ако корисникот не внесе број од тој интервал, да се испише: “Brojot ne e vo intervalot od 10 do 20, obidete se povtorno“. Циклусот да се извршува толку долго се додека условот е на TRUE, односно додека корисникот внесува броеви поголеми од нула. Ако корисникот внесе 0 односно False, се прекинува програмата.
Приказ на излезот:
Решение:
while True:
broj = int(input('Vnesete broj vo intervalot od 10 do 20: '))
if broj>=10 and broj<=20:
print('Cestitame - vnesovte broj vo baraniot interval ', broj)
elif broj==False:
break
else:
print('Brojot ne e vo intervalot od 10 do 20')
print('Obidete se povtorno')
Во условот можевме наместо True да напишеме еден (1). И во двата случаи тоа значи дека програмата се прекинува само кога ќе внесеме нула (0).
Погледнете го видеото за пример3:
Задача за дома:
Напишете програма која ќе внесува број во интервал од 30 до 50. Ако е точно да се напише порака “Brojot e vo baraniot interval“, а ако не е, да напише порака “Obidete se povtorno, brojot ne e vo baraniot interval!“