Hirdetés

Új hozzászólás Aktív témák

  • cousin333

    addikt

    A programozási nyelvek (pl. Python) tanulásának egyik nehézsége, hogy már a legelején kompromisszumokat kell kötni: hiszen "minden mindennel összefügg", nem lineáris a folyamat, így nehéz eldönteni, hogy egy adott ismeret megtanulása túl korai-e. Például a típusoknál van egész meg lebegőpontos szám, sztring meg lista. De igazából mindegyik egy osztály, aminek vannak pl. metódusai, amiket szintén nem árt ismerni. A kérdés, hogy mennyire mélyen kell belemenni ennek a magyarázatába mindjárt a legelején.

    Véleményem szerint a tanulás során az a fontos, hogy meglegyenek a stabil alapok és fogalmak:
    - Python telepítése
    - interaktív mód, "fájl-mód" használata
    - típusok ismerete, néhány metódussal
    - hasznos gyári függvények megismerése (print, type, int, input, range, len, zip)
    - utasításszervezés: ciklusok (while, for) és feltételes elágazások (if, else)

    A fenti ismeretekkel már el lehet boldogulni és hasznos programok készíthetők. Ezek tanulásakor viszont kiemelten fontosnak tartom - különösen a Python esetén -, hogy a helyes használatot sajátítsuk el, mert jobb, ha az elején az ragad meg bennünk. Például korábban linkeltétek ezt a Python programozást tanító oldalt. Már az elejétől egy kicsit ide-oda kapkodónak tűnik, de a fentebb említett okok miatt ez még belefér. Az viszont már nem, hogy pl. a 8. részben - aminek a teljes léte vitatható ebben a formában, mert olyan dolgokat ecsetel, amiket Pythonban nem kell "kézzel" megcsinálni - képes ilyen példaprogramot írni:

    def kereses (L, e):
    for i in range (len(L)):
    if L[i] == e:
    return True
    return False

    Kicsit szégyenlem is, hogy idemásoltam, de mindemellett szeretném hangsúlyozni, hogy a Python nem C! A kód második sora ennek megfelelően egy Python elleni merénylet. A for ciklus ebben a nyelvben az elemeken lépked végig, nem az indexeken. A fenti megoldás rondább - és lassabb! - mint a helyes változat:

    def kereses(L, e):
    for i in L:
    if i == e:
    return True
    return False

    Ami még mindig nem az igazi, hiszen máshogy kell lekódolni azt, hogy egy lista tartalmaz-e egy bizonyos elemet:

    e in L

    Jól látható, hogy a fenti kód "némileg" egyszerűbb, mint az eredeti... Aki tehát az alapokat rendesen szeretné elsajátítani, (ismételten) ajánlom neki Raymond Hettinger (Python core-developer) videóját. Angol, de elég a kódot nézni. Felül a rossz, alul a jó.

    A másik fontos feladatnak a globális szemlélet elsajátítását tartom. Ez kicsit olyan, mintha távolról néznél egy térképet, hogy lásd, hol vagy körülbelül a térképen. Ezek pl: a "tor"-ok: iterator, generátor, dekorátor, vagy például list comprehension.

    [ Szerkesztve ]

    "We spared no expense"

Új hozzászólás Aktív témák