Niejednokrotnie na prowadzonych przeze mnie zajęciach, spotkałem się z osobami, które chciały już na samym początku skupić się na nauce programowania od tematu obiektowości. Takie podejście nie zawsze było trafione, ponieważ problem zazwyczaj tkwił w braku solidnych podstaw.

Tutoriale i książki głównie wprowadzają w temat słów kluczowych i konstrukcji jakie oferuje Python. To świetny sposób na usystematyzowanie wiedzy, ale nie na rozwinięcie logicznego myślenia niezbędnego w rozwiązywaniu problemów. Pozyskana w ten sposób wiedza jest często powierzchowna i bazowanie tylko na niej może doprowadzić do blokady w programowaniu.

Tak jest w przypadku, kiedy uczymy się Pythona poprzez poznawanie kolejnych wbudowanych w nim rzeczy. Taka nauka ma charakter przyrostowy i polega na ciągłym szukaniu gotowego rozwiązania, ale czy ta metoda jest najlepsza?

Z doświadczenia wiem, że takie podejście jest niewystarczające. Spójrzmy na poniższy przykład, który obrazuje odliczanie od 1 do 10. Nie jest to złożony przypadek, ponieważ wystarczy tu użyć tylko pętlę for i wywołać range.

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

W sytuacji, gdy zaistnieje potrzeba jednoczesnego odliczania od 0 do 5, i od 5 do 0, powyższe rozwiązanie już się nie sprawdzi. Część osób zapewne pomyśli o drugiej pętli, ale jej użycie nie spowoduje wyświetlenia dwóch liczb na raz (w jednym rzędzie).

O rozwiązanie będzie łatwiej, gdy spróbujemy zwizualizować końcowy wynik:

0 5
1 4
2 3
3 2
4 1
5 0

Warto zastanowić się nad tym, czy istnieje sposób, aby na podstawie pierwszej kolumny liczb odtworzyć drugą kolumnę. Szukanie zależności jest tu kluczowe. Widzimy bowiem, że pierwsza kolumna stopniowo rośnie, a druga stopniowo maleje. Dodatkowo można zauważyć, że suma w każdym rzędzie wynosi zawsze 5. Jeśli w pierwszej kolumnie wystąpi 1, to aby otrzymać 4 wystarczy wykonać działanie 5 - 1.

Rozwiązaniem jest następujący kod:

for i in range(6):
    print(i, 5 - i)

To jest jeden z wielu przypadków, który sprawia kłopoty, a przecież z punktu widzenia gramatyki Pythona nie wprowadza on niczego nowego.

Sama znajomość wbudowanych w Pythona konstrukcji, nie poparta logicznym myśleniem, nie gwarantuje rozwiązania każdego problemu.

Z tego właśnie powodu stworzyłem serwis kursy.devpython.pl - miejsce, które pomoże Ci skutecznie przełamać blokadę w programowaniu, poprzez rozwiązywanie problemów o różnym stopniu złożoności.
Warty podkreślenia jest fakt, że na każdym etapie nauki będziesz mógł liczyć na moją pomoc. Wszystkie wysłane przez Ciebie rozwiązania zostaną przeze mnie sprawdzone, a w komentarzu otrzymasz liczne wskazówki oraz końcowy feedback.

Poniższy screen przedstawia komunikację w trakcie rozwiązywania zadania: