Pętla warunkowa

Do instrukcji warunkowych możemy zaliczyć pętlę while. Ona, tak jak i pętla "for", również pozwala nam zapisać dużą ilość czynności w kilku linijkach kodu, z tą różnicą, że kończy się dopiero jak warunek zostanie spełniony. używamy jej, gdy chcemy robić coś dopóki jakiś warunek jest spełniony i nie wiemy ile razy dokładnie instrukcje zawarte w pętli powinny się wykonać. Zobaczmy przykład.

x=0
while x<5:
    print "zmienna x wynosi ", x
    x+=1

Co tutaj zrobiliśmy? Na zmienną X przypisujemy najpierw wartość 0, a potem z każdym obrotem pętli, dodamy 1 do zmiennej x, aż wartość x będzie wynosiła 5, wtedy pętla już więcej się nie wykona i program będzie wykonywany dalej.

Dziwny zapis? Tak, zamiast x=x+1 możemy napisac poprostu x+=1, są to zapisy równoważne. Podobnie możemy pisać *=, -=, a nawet /=.

Oczywiście w tak prosty przypadek z łatwością możemy zastąpić pętlą "for", ale znajdziesz w przyszłości przypadki kiedy zwyczajnie jest to niewygodne, a elastyczność zapisu jest w programowaniu bardzo potrzebna.

 

Jak jeszcze możemy używać pętli? A może stwórzmy taką, która nigdy nie kończy działania?

Jak ją zatrzymać?

używając słowa "break" kiedy na przykład zostanie spełniony jakiś warunek wewnątrz pętli

Kiedy jej używać?

Kiedy chcemy żeby na przykład kilka instrukcji w pętli wykonywało się nawet kiedy warunek pętli nie jest spełniony.

Spójrzmy na przykład:

x=0
while True:
    print "To wyswietli sie zawsze gdy warunek jest spelniony"
    if x==5:
        print "zmienna x wynosi ", x
        break
    else:
        print x
    x+=1 

Dodaliśmy tu instrukcję warunkową, wynikiem naszego programu będzie ten sam napis (za wyjątkiem oczywiście dodanego zdania "To wyswietli sie zawsze gdy warunek jest spelniony"), ale zamiast przerywać go poprzez warunek pętli, przerywamy go dopiero konstrukcją break, wywoływaną tylko gdy zostanie spełniony nasz warunek.

To może jeszcze jeden przykład?

x=[1,2,3,4,5]
while x:
    y=x.pop()
    print "ostatnia wartości z listy x to ", y
else:
    print 'koniec'

Gdy wywołamy powyższy kod, otrzymamy wypisane wartości listy x, tylko że od końca, ponieważ metoda pop(), której wynik przypisujemy na zmienną y zwraca ostatnią wartość listy, jednocześnie  ją usuwając, oraz napis "koniec" po skończonej pętli.

Warto dodać, że gdy użyjemy listy jako warunku, domyślnie znaczy on "dopóki są jakieś elementy na liście".

UWAGA: Instrukcje zawarte w "else" dodanym do pętli while, wykonają się jeśli warunek pętli nie zostanie spełniony (czyli po normalnym zakończeniu pętli), ale nie zostaną wykonane jeśli używamy instrukcji "break", wewnątrz pętli.

Możemy również nie pisać else, a nasz program będzie działał niemal tak samo, tyle że instrukcje z bloku else zostaną wykonane nawet w przypadkach, kiedy użyjemy "break".

 

x=[1,2,3,4,5]
while x:
    y=x.pop()
    print y
print 'koniec'

Jak widzisz, nawet pętle warunkowe nie są zbyt trudne. Teraz przejdźmy do kolejnego tematu, jakim są funkcje.