Pchełki Python: Fibonacci

https://xpil.eu/Nv8Tc

Pchełka o ciągu Fibonacciego już była. Ale tam to było w SQL-u, czyli w języku tak przydatnym do obliczeń numerycznych, jak puzon do produkcji twarogu.

Tym razem spróbujemy użyć języka bardziej nadającego się do matematycznych wybryków, czyli Pythona.

Celem dzisiejszej Pchełki nie jest pokazanie, jak wyliczyć ciąg Fibonacciego ani nawet wyjaśnienie czymże ów ciąg jest. Celem dzisiejszej Pchełki jest pokazanie (po raz drugi, bo raz już pokazywałem) jak działa operator yield oraz jak pięknie można skrócić kod używając podstawienia do kilku zmiennych na raz.

Kod jest króciutki:

def fib_gen():
  a, b = 0, 1
  while True:
    yield a
    a, b = b, a + b

fib_gen w powyższym kodzie to jest generator (o generatorach już pisałem kiedyś), czyli taka jakby funkcja, która zamiast - jak to robią tradycyjne funkcje - zwracać wartość i kończyć pracę, za każdym razem, kiedy natrafi na operator yield, zapisuje swój stan i zwraca do procesu ją wywołującego wartość podaną operatorowi yield. Kolejne wywołanie operatora powoduje, że zaczyna on się wykonywać od instrukcji następującej po operatorze yield. Dzięki temu można taki generator wykorzystać w pętli. Tutaj, jak widać, generator jest nieskończony ("while True..."), jednak nie oznacza to, że program, używający takiego generatora, się nigdy nie skończy. Oto przykład:

for n in fib_gen():
  if n > 1000:
    break
  print(n)

Powyższy kod wygeneruje na wyjściu wszystkie liczby ciągu Fibonacciego nie większe niż 1000.

Inna bardzo pożyteczna funkcja w Pythonie to możliwość podstawienia kilku wartości do kilku zmiennych za jednym zamachem. Też już o tym wspominałem, ale piszę o tym ponownie, bo jest to prosta a zachwycająca swą funkcjonalnością idea. Zamiana wartości dwóch zmiennych to po prostu x,y=y,x - nie trzeba deklarować tymczasowej zmiennej pomocniczej itd. Miód, malina.

https://xpil.eu/Nv8Tc

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.