Dzisiejsze statystyki

Ukończone ćwiczenia
-
Napisane znaki Napisane słowa
-
Czas ćwiczeń
-

Łączne statystyki

Ukończone ćwiczenia
-
Napisane znaki Napisane słowa
-
Czas ćwiczeń
-

Ćwiczenie pisania bezwzrokowego: Programowanie w języku Python

Pisanie bezwzrokowe jest istotne w programowaniu. Korzystając z technik szybkiego pisania, sprawniej tworzysz kod w języku programowania Python.

Dowiedzmy się więcej o języku Python i pisaniu bezwzrokowym podczas programowania w języku Python.

Programowanie w Python i pisanie bezwzrokowe

Programowanie w Pythonie wymaga dokładności, rytmu i dbałości o szczegóły. W przeciwieństwie do Javy czy C, gdzie strukturę kodu określają nawiasy klamrowe i średniki, Python opiera się na wcięciach i białych znakach, aby wyrazić logikę programu. To sprawia, że jest językiem bardzo jednoznacznym i rygorystycznym: sposób zapisania kodu bezpośrednio wpływa na jego działanie. Python sprawdza składnię pliku przed jego wykonaniem. Inne błędy ujawniają się podczas działania programu, czasem dopiero w rzadko używanej gałęzi kodu. Nieprawidłowe wcięcie lub brak dwukropka mogą uniemożliwić uruchomienie pliku. Dlatego precyzja na klawiaturze jest kluczowa. Pisanie bezwzrokowe - umiejętność pisania bez patrzenia na klawiaturę - bezpośrednio wspiera tę precyzję. Ogranicza liczbę przypadkowych pomyłek i pozwala skupić się na logice programu, zamiast na mechanice jego zapisywania.

Białe znaki i wcięcia

Wcięcia w Pythonie nie są kwestią estetyki - to składnia języka. Wcięcia w każdym bloku kodu muszą być spójne. Niespójne wcięcia, niejednoznaczne mieszanie tabulatorów ze spacjami lub brak dwukropka w nagłówku bloku powodują błąd składni. Może to być frustrujące dla początkujących, ale jednocześnie wyrabia dyscyplinę. Dzięki pisaniu bezwzrokowemu wstawianie wcięć staje się nawykiem. PEP 8 zaleca cztery spacje na każdy poziom, a edytor może wstawiać je automatycznie. Ćwiczenie spójnych wcięć ułatwia zachowanie struktury kodu i płynności pracy. W językach, w których bloki wyznaczają nawiasy klamrowe, nierówne wcięcia nie muszą wpływać na działanie programu; w Pythonie wyznaczają one bloki kodu.

# Poprawne wcięcie
for i in range(3):
    print(i)

# Błędne wcięcie
for i in range(3):
    print(i)
  print(i)  # błąd

Słowa kluczowe i elementy składni

Python ma stosunkowo niewielki zestaw słów kluczowych, ale pojawiają się one w kodzie bardzo często: def, class, if, elif, else, try, except, with. Zawsze zapisuje się je małymi literami i należy je pisać bezbłędnie. Dwukropek : wyznacza początek każdego bloku, a jego brak zatrzyma działanie programu. Pisanie bezwzrokowe sprawia, że tworzy się stały schemat ruchów palców - dzięki temu konstrukcje takie jak if ... : czy def ... : zapisuje się automatycznie. Palce pamiętają sekwencję klawiszy, co zmniejsza liczbę błędów i pozwala skupić się na logice oraz czytelności kodu.

if value > 0:
    print("Dodatnia")
elif value == 0:
    print("Zero")
else:
    print("Ujemna")

Ciągi znaków i sekwencje specjalne

Napisy w Pythonie można zapisywać w pojedynczych cudzysłowach, podwójnych cudzysłowach lub w potrójnych znakach cudzysłowu. Te ostatnie są przydatne przy docstringach lub wartościach wieloliniowych. Napisy surowe (raw strings) ułatwiają pracę z wyrażeniami regularnymi i ścieżkami plików. Przy wpisywaniu cudzysłowów często zdarzają się drobne, lecz uciążliwe błędy. Pisanie bezwzrokowe ułatwia odnajdywanie klawiszy z poszczególnymi znakami cudzysłowu i wpisywanie ich bez patrzenia na klawiaturę. To samo dotyczy znaków ucieczki, takich jak \n czy \\. Gdy ręce pamiętają układ klawiszy, można tworzyć napisy płynnie, bez przerywania toku myślenia.

print("Witaj, świecie")
print('To też działa')
doc = """To jest
napis wieloliniowy
używany jako dokumentacja."""
path = r"C:\Users\Ala"

Klasy i paradygmat obiektowy

Python wspiera programowanie obiektowe, ale w bardziej elastyczny sposób niż np. Java. Klasy definiuje się za pomocą słowa class, a metody instancji przyjmują jawny pierwszy parametr, który zwyczajowo nazywa się self. Metody specjalne, takie jak __init__ czy __str__, są kluczowe dla konstrukcji klas. Podwójne podkreślenia, zwane potocznie "dunderami", łatwo wpisać błędnie. Pisanie bezwzrokowe pozwala radzić sobie z tymi powtarzalnymi symbolami bez problemu. Stosowanie konwencji nazewniczych - CamelCase dla klas i snake_case dla metod - również wymaga swobody w pisaniu podkreśleń. Płynne pisanie bezwzrokowe ułatwia konsekwentne stosowanie tych konwencji w całym kodzie.

class Customer:
    def __init__(self, name, balance=0):
        self.name = name
        self.balance = balance

    def __str__(self):
        return f"Klient {self.name}, saldo {self.balance}"

Inne paradygmaty

Python nie ogranicza się do jednego paradygmatu. Obsługuje programowanie proceduralne oraz elementy funkcyjne, takie jak funkcje wyższego rzędu czy wyrażenia lambda. Comprehensions (listy składane) pozwalają łączyć pętle i warunki w jednej linii. Wymagają one precyzji w użyciu nawiasów i operatorów. Dzięki pisaniu bezwzrokowemu ręce podążają płynnie za schematem znaków, co pozwala skupić się na logice zamiast na układzie klawiatury.

# Styl funkcyjny
squares = [x*x for x in range(10) if x % 2 == 0]

Obsługa błędów

W Pythonie obsługa błędów odbywa się za pomocą try, except, finally oraz raise. Konstrukcje te są zwarte, ale wymagają pełnej poprawności: brak dwukropka lub niepoprawne wcięcie unieruchomią cały blok. Pisanie bezwzrokowe pozwala szybciej opanować nawyki potrzebne do poprawnego tworzenia takich struktur. Dzięki temu można skupić się na tym, jakie wyjątki obsłużyć, a nie na tym, jak w ogóle zapisać blok kodu.

try:
    number = int("abc")
except ValueError:
    print("Niepoprawna liczba")
finally:
    print("Koniec")

Moduły i biblioteki

Ogromnym atutem Pythona jest jego ekosystem. Niezależnie od problemu, prawdopodobnie istnieje biblioteka, która już go rozwiązuje: Django i Flask do aplikacji webowych, pandas i NumPy do analizy danych, TensorFlow i PyTorch do uczenia maszynowego. Praca z bibliotekami oznacza częste pisanie długich instrukcji import, ścieżek z kropkami i nazw metod z podkreśleniami. To bywa nużące, jeśli nie czujemy się pewnie na klawiaturze. Pisanie bezwzrokowe sprawia, że importy i wywołania metod powstają naturalnie, bez szukania symboli, co zwiększa produktywność podczas wielogodzinnej pracy.

import pandas as pd
import numpy as np

df = pd.DataFrame({"id": [1, 2, 3], "score": [88, 95, 70]})
print(np.mean(df["score"]))

Dekoratory i menedżery kontekstu

Dekoratory zaczynają się od symbolu @ i muszą być zapisane dokładnie, a menedżery kontekstu rozpoczyna słowo with i dwukropek. Brak symbolu lub wpisanie go w niewłaściwym miejscu może spowodować błąd składni. Pisanie bezwzrokowe ułatwia tworzenie takich fragmentów kodu. Gdy pisanie @logger czy with open(...) staje się automatyczne, można skupić się na logice zamiast na technicznych szczegółach składni.

@staticmethod
def greet(name):
    print("Witaj", name)

with open("plik.txt") as f:
    data = f.read()

Adnotacje typów

Od wersji 3.5 Python obsługuje adnotacje typów (type hints). Dzięki nim można opisać oczekiwane typy zmiennych, parametrów i wartości zwracanych. Python nie sprawdza automatycznie tych typów podczas działania programu, ale adnotacje zwiększają czytelność i ułatwiają narzędziom wykrywanie niezgodności. Tworzenie adnotacji wymaga użycia dwukropków i strzałek, takich jak -> str. Dodają one przejrzystości, lecz też zwiększają ryzyko drobnych błędów. Pisanie bezwzrokowe pomaga zachować dokładność w takich detalach, dzięki czemu adnotacje stają się nawykiem, a nie przeszkodą. W większych projektach to ogromne ułatwienie współpracy.

def average(values: list[int]) -> float:
    return sum(values) / len(values)

def greet(name: str, excited: bool = False) -> str:
    return f"Witaj, {name}!" if excited else f"Witaj, {name}"

Programowanie asynchroniczne

Python obsługuje programowanie asynchroniczne za pomocą słów kluczowych async i await. Pozwalają one pisać kod współbieżny w stylu przypominającym funkcje synchroniczne. Nieprawidłowe użycie tych słów kluczowych może powodować błędy składni lub nieoczekiwane zachowanie podczas działania programu. Dzięki pisaniu bezwzrokowemu można przyzwyczaić się do wpisywania tych konstrukcji bez szukania poszczególnych klawiszy. Gdy wpisanie async def czy await fetch() nie przerywa już toku myślenia, łatwiej skupić się na logice całego programu.

import asyncio

async def fetch_data():
    await asyncio.sleep(1)
    return "dane"

async def main():
    result = await fetch_data()
    print(result)

asyncio.run(main())

Podsumowanie

Python jest jednoznaczny w kwestii struktury - to wcięcia definiują program. Błędy składni wykrywa przed wykonaniem pliku, a inne błędy ujawniają się podczas działania programu. Konwencje PEP 8 pomagają zachować czytelność kodu, podobnie jak konsekwentny zapis słów kluczowych i stosowanie konstrukcji typowych dla Pythona. Obsługuje wiele paradygmatów: obiektowy, proceduralny, funkcyjny i asynchroniczny. Ekosystem bibliotek jest ogromny i wymaga pewności przy pisaniu importów i długich łańcuchów metod. We wszystkich tych obszarach pisanie bezwzrokowe ma praktyczne znaczenie. Ogranicza błędy we wcięciach, ułatwia korzystanie z dwukropków, podkreśleń i cudzysłowów oraz wspiera płynne stosowanie adnotacji czy konstrukcji asynchronicznych. Dla programistów spędzających godziny dziennie przy Pythonie pisanie bezwzrokowe nie jest tylko kwestią szybkości - to sposób na większą precyzję, skupienie i swobodną pracę nad czytelnym kodem.

Następny tekst
Następna lekcja
Zadanie Wróć do testu
python
Wykres Ukryj