Przejdź do głównej zawartości

Python - lekcja 004

Spis treści:
 - pętla while,
 - pętla for,
 - zadania.


Poprzednia lekcja: Lekcja 3 (warunki)
Następna lekcja: Lekcja 5 (konwersje systemów liczbowych, zapis liczb ujemnych w systemie binarnym)

Pętle, czyli iteracje, ułatwiają wielokrotne wykonanie bloku instrukcji.

Podstawową pętlą w języku Python jest pętla while. Jej składnia pętli while:

while warunek:  
  blokInstrukcji_1
else:
  blokInstrukcji_2

Pierwszy blok instrukcji będzie wykonywany dopóki warunek będzie zwracał wartość True (gdy warunek będzie spełniony). Gdy w warunek zwróci wartość False program przejdzie do wykonania drugiego bloku instrukcji i wyjdzie z pętli. Gdyby pętla została przerwana instrukcja break drugi blok instrukcji nie zostałby wykonany ani razu.

Przykład użycia:

1
2
3
4
5
6
i = 10 
while i > 0:
  print str(i), 
  i = i - 1
else: 
  print "zero"

a teraz najprostszy sposób wyszukiwania pierwiastka 2-go stopnia:

1
2
3
4
5
6
n = 9
k = 0.01
while k * k < n:
    k += 0.01
print "znaleziono pierwiastek kwadratowy liczby", str(n), "i wynosi on", k
print "[dokładnosc wyniku eps = 0.01]"

oczywiście nic nie stoi na przeszkodzie by do pierwiastkowania liczb w Pythonie używać operatora potęgowania. Powyższy przykład ma na celu zobrazowanie działania pętli. Poniżej prezentacja użycia operatora potęgowania:

1
2
print 9 ** (1.0/2.0)
print 8 ** (1.0/3.0)

Drugą z pętli używanych w języku Python jest pętla for. Jest ona odpowiednikiem foreach z PHPa. Służy ona do przeglądania kolekcji np. tablic.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
slowo = "Ala ma kota"
for litera in slowo:
    print litera,

print "\n-----------------------------------------"

for i in range(1,3):
    print i,

print "\n-----------------------------------------"

for x in xrange(1, 11):
    for y in xrange(1, 11):
        print '%3d' % (x*y),
    print

print "\n-----------------------------------------"

macierz = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]
for linia in macierz:
    print "|",
    for element in linia:
        print "%5d" % element,
    print "%5s" % "|"
print "\n-----------------------------------------"

macierz = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]
for linia in macierz:
    print "|",
    for element in linia:
        print '{0: <5}'.format(element),
    print '{0: >5}'.format("|")

print "\n-----------------------------------------"

Wspomniałem wcześniej o instrukcji break. Jest to instrukcja, która potrafi przerwać pętlę, w której została umieszczona.


1
2
3
4
for i in xrange(1,100):
    if(i>=10):
        break
    print i,

Powyższa pętla zostanie zatrzymana po osiągnięciu przez zmienną i wartości 10.
Drugą instrukcją pozwalającą na manipulowanie pętlami jest instrukcja continue. Powoduje ona zakończenie danego przebiegu pętli i rozpoczęcie kolejnego.

1
2
3
4
for i in xrange(1,100):
    if(i<90):
        continue
    print i,

 

Poprzednia lekcja: Lekcja 3 (warunki)

Zadanie

1. Metodą połowienia (bisekcji) znajdź miejsce zerowe funkcji liniowej
f(x) = ax + b
a i b są podawane przez użytkownika. Miejsca zerowego szukaj w przedziale x [0,10]. Jeżeli nie znajduje się w tym przedziale miejsce zerowe wypisz BRAK w przeciwnym razie wypisz współrzędna x miejsca zerowego danej funkcji. Przyjmij dokładność wyliczeń eps = 0.001.

Podpowiedź: Pierwiastek kwadratowy (metoda połowienia)

2. Przyjmijmy, że Adam wziął kredyt na 3000pln. Oprocentowanie kredytu w skali roku wynosi 20%. Adam będzie spłacał kredyt w 12 ratach (co miesiąc). Spłata kredytu będzie odbywać się zgodnie z poniższymi wzorami:

dlug = 3000
oprocentowanieRoczne = 0.2
rata = dlug / 12
oprocentowanieMiesieczne = oprocentowanieRoczne/12

co miesiąc:

doZaplaty = rata + dlug * oprocentowanieMiesieczne
dlug = dlug - rata

Jaka będzie wysokość najniższej miesięcznej raty (wraz z oprocentowaniem) i ile w sumie będzie musiał oddać bankowi Adam?


Poprzednia lekcja: Lekcja 3 (warunki)

Komentarze

Popularne posty z tego bloga

[C++]Konwersja systemu dziesiętnego na binarny [dec2bin, dec2u2]

Konwersja między systemami liczbowymi była już poruszana w tym serwisie tym razem zajmę się kodem U2. Inaczej zwany uzupełnieniem do 2. Opis tego systemu pojawił się w kontekście wstępu do programowania w języku Python [ tutaj ]. Prosty program tzw. szkolny zamiany nieujemnej liczby dziesiętnej na jej postać binarną: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream> using namespace std; int main () { int liczba; cin >> liczba; string wynik; while (liczba){ wynik = (liczba % 2 ? "1" : "0" ) + wynik; liczba /= 2 ; } cout << wynik; return 0 ; } Poniżej prezentuję kod programu, który zawiera trzy metody rozwiązania problemu jakim jest wyświetlenie użytkownikowi reprezentacji u2 podanej przez niego liczby dziesiętnej. Pierwsza z nich wywodzi się z typowego algorytmu konwersji systemu dec do u2: 1. przedstaw bezwzględną wartość liczby dziesiętnej w postaci binarnej, 2. dodaj na początek

Python - lekcja 005

Spis treści - zamiana całkowitych liczb dziesiętnych na ich odpowiedniki w innych systemach liczbowych (algorytm), - ujemne liczby całkowite w systemie binarnym (ZM, U1, U2, algorytm, formatowanie stringów, rzutowanie ze zmianą systemu liczbowego) [dec2bin, dec2ZM, dec2U1, dec2U2] - zadania.