08.3 Pętla for

x = [1.0, 2.0, 3.0]
for n in x:
    print(1 / n)

08.3.1 Funkcja range

x = [1, 3, -7, 4, 9, -5, 4]
for i in range(len(x)):
   if x[i] < 0:
      print("Znaleziono liczbę ujemną na pozycji ", i)

>>> list(range(3, 7))           #1
[3, 4, 5, 6]
>>> list(range(2, 10))          #1 
[2, 3, 4, 5, 6, 7, 8, 9]        
>>> list(range(5, 3))
[]


>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(5, 0, -1))
[5, 4, 3, 2, 1]


08.3.3 Pętla for i rozpakowywanie krotek

>>> jakaś_lista = [(1, 2), (3, 7), (9, 5)]
>>> wynik = 0
>>> for krotka in jakaś_lista:
...     wynik = wynik + (krotka[0] + krotka[1])
...
>>>


>>> jakaś_lista = [(1, 2), (3, 7), (9, 5)]
>>> wynik = 0
>>> for element_0_krotki, element_1_krotki in jakaś_lista:
...     wynik = wynik + (element_0_krotki + element_1_krotki)
...
>>>


08.3.4 Funkcja enumerate

x = [1, 3, -7, 4, 9, -5, 4]
for i, n in enumerate(x):    #1
   if n < 0:    #2
      print("Znaleziono liczbę ujemną na pozycji ", i)    #3


08.3.5 Funkcja zip 

>>> x = [1, 2, 3, 4]
>>> y = ['a', 'b', 'c']           #A 
>>> z = zip(x, y)
>>> list(z)
[(1, 'a'), (2, 'b'), (3, 'c')]    #B


08.4 Listy i słowniki składane

>>> x = [1, 2, 3, 4]
>>> x_do_kwadratu = []
>>> for podstawa in x:
...     x_do_kwadratu.append(podstawa * podstawa)
...
>>> x_do_kwadratu
[1, 4, 9, 16]


>>> x = [1, 2, 3, 4]
>>> x_do_kwadratu = [podstawa * podstawa for podstawa in x]
>>> x_do_kwadratu
[1, 4, 9, 16]


>>> x = [1, 2, 3, 4]
>>> x_do_kwadratu = [podstawa * podstawa for podstawa in x if podstawa > 2]
>>> x_do_kwadratu
[9, 16]


>>> x = [1, 2, 3, 4]
>>> x_do_kwadratu = {podstawa: podstawa * podstawa for podstawa in x}
>>> x_do_kwadratu
{1: 1, 2: 4, 3: 9, 4: 16}

08.4.1 Wyrażenia generatora

>>> x = [1, 2, 3, 4]
>>> x_do_kwadratu = (podstawa * podstawa for podstawa in x)
>>> x_do_kwadratu
<generator object <genexpr> at 0x000002057DAFB150>
>>> for potęga in x_do_kwadratu:
...     print(potęga,)
...
1
4
9
16


08.5 Instrukcje, bloki i wcięcia 

>>> x = 1; y = 0; z = 0
>>> if x > 0: y = 1; z = 10
... else: y = -1
...
>>> print(x, y, z)
1 1 10


>>>
>>>   x = 1
File "<stdin>", line 1
    x = 1
    ^
   IndentationError: unexpected indent
>>>


>>> x = 1
>>> if x == 1: 
...    y = 2
...    if v > 0:
...        z = 2
...        v = 0
...
>>> x = 2


>>> x = 1
>>> if x == 1:
           y = 2
        z = 2
File "<stdin>", line 3
       z = 2
       ^
    IndentationError: unindent does not match any outer indentation level


>>> print('tekst1', 'tekst2', 'tekst3' \
...     , 'tekst4', 'tekst5')
tekst1 tekst2 tekst3 tekst4 tekst5
>>> x = 100 + 200 + 300 \
...   + 400 + 500
>>> x
1500
>>> v = [100, 300, 500, 700, 900,
... 1100, 1300]
>>> v
[100, 300, 500, 700, 900, 1100, 1300]
>>> max(1000, 300, 500,
...         800, 1200)
1200
>>> x = (100 + 200 + 300
...          + 400 + 500)
>>> x
1500



>>> "łańcuchy znaków podzielone białymi znakami "       \
...     """są automatycznie"""  ' łączone'
'łańcuchy znaków podzielone białymi znakami są automatycznie łączone'
>>> x = 1
>>> if x > 0:
...     tekst1 = "ten tekst podzielony znakiem odwróconego ukośnika \
...             będzie zawierał wcięcia"
...
>>> tekst1
'ten tekst podzielony znakiem odwróconego ukośnika             będzie zawierał wcięcia'
>>>
>>> if x > 0:
...     tekst1 = "można tego łatwo uniknąć dzieląc " \
...         "tekst w ten sposób"
...
>>> tekst1
'można tego łatwo uniknąć dzieląc tekst w ten sposób'

08.6.2 Porównania i operatory logiczne

>>> [2] and [3, 4]
[3, 4]
>>> [] and 5
[]
>>> [2] or [3, 4]
[2]
>>> [] or 5
5
>>> 


>>> x = [0]
>>> y = [x, 1]
>>> x is y[0]            #A
True
>>> x = [0]              #B
>>> x is y[0]
False
>>> x == y[0]
True

