Értem én, hogy gőzgép, de hányadik?

Ma valami fölöslegeset tanulunk. Sőt, legközelebb is azt fogunk. Illetve…

Ezt a két posztot az köti össze, hogy amit megismerünk bennük, az semmi új funkcionalitást nem hoz a programozási készségeink közé. Akkor meg minek?

Nos, a Python-programozásban van olyan,  hogy “Pythonos” megoldás, azaz lehet ezt más programozási nyelvek módszere szerint is csinálni, de Pythonban így szép, így érdemes. Miért érdemes így? Azért, mert tömörebb, és/vagy jobban olvasható kódot készítünk vele. A jól olvashatóság meg jelentős lépés a jól karbantarthatóság felé – ne feledjük, hogy a programozás lényege az, hogy olyan programokat írjunk, amelyek éveken át használhatóak, és nem baj, ha a két év múlva felmerülő programhiba (magyarul: bug) javításakor azonnal látszódik, hogy mit csinál a programunk.

Egyébiránt láttál már ilyet a Pythonidomár oldalait olvasgatva is, például amikor nem azt mondtuk, hogy

if esik_az_a_rohadt_eső == True:
    print('Elegem van!')

hanem csak azt, hogy:

if esik_az_a_rohadt_eső:
    print('Elegem van!')

Így Pythonosabb. Ilyen Pythonosság a map() függvény, vagy a join() tagfüggvény is.

Na, vissza a mai poszthoz. Mondjuk, hogy van egy rakat gőzmozdonyunk. Legyen mondjuk a Rocket, a 424, Thomas és a Flying Scotsman. Tegyük őket listába és írjuk ki, hogy:

1: Rocket
2: 424
3: Thomas
4: Flying Scotsman

Így, számokkal. Törjük a fejünket egy percet, és ha tudjuk, miként oldanánk meg a feladatot, nézzük meg a videót.

mozdonyok = ['Rocket','424','Thomas','Flying Scotsman']

sz = 1
while sz <= len(mozdonyok):
    print(sz, ': ', mozdonyok[sz-1], sep='')
    sz += 1

print()

for sz2 in range(len(mozdonyok)):
    print(sz2 + 1, ': ', mozdonyok[sz2], sep='')

print()

for sz3, mozdony in enumerate(mozdonyok):
    print(sz3 + 1, ': ', mozdony, sep='')

Szóval így megy ez az enumerate esetén:) Két változót pörget egyszerre a for: az egyik a számláló, a másik – a sima bejárós ciklushoz hasonlóan – az épp aktuális listaelem.

Feladatok:

F0043a: Van egy listád a hónapok neveivel, meg egy másik a 30 napos hónapok neveivel. A most tanult enumerate és a kiválogatás használatával írj olyan listát (mármint hagyományos értelemben vettet, nem Python-adatszerkezetet) a képernyőre, ahol egymás alatt látszanak a hónapok, egy-egy sorban a hónap sorszámával, nevével a hónap napjainak számával. A programod tudja, hogy február hány napos.

F0043b: Tölts fel egy listát random egészekkel, majd az enumerate használatával írd ki, hogy ki hányadik a nagyság szerinti sorban. Ehhez a listát rendezned kell, mert ebben a feladatban az is fontos, hogy a rendezés ne rontsa el az eredeti listát.  (Megoldás az expand source-ra kattintva)

import random

számok = random.choices(range(500), k=100) #ezzel csak menőzök, lehet ezt sima ranom.randint-tel is

for index, szám in enumerate(sorted(számok)):
    print('A(z) ', index+1, '. helyezett: ', szám, sep='')

Legutóbb tesztversenyeztünk. Legközelebb listaértelmezünk.

Reklámok

Értem én, hogy gőzgép, de hányadik?” bejegyzéshez ozzászólás

  1. Szia!
    Nem tudom jól értelmeztem e a F0043b feladatot, de mivel nem készítettél megoldást és nem volt annyira egyszerű megoldani, így gonlolom, hogy van egy sokkal kézefekvőbb dolog is, amit nem vettem észre. Vagy csak egyszerűen nem ez volt a kérdés? 🙂 Előre is köszönöm a választ.

    import random

    szamok = []
    rendezett_lista = []

    for szam in range(50):
    szamok.append(random.randint(1,500))

    for x,szam in enumerate(szamok):
    sor=[]
    sor.append(szam)
    sor.append(x+1)
    rendezett_lista.append(sor)

    for sor in sorted(rendezett_lista):
    print(‘A listában szereplő ‘,sor[0],’, a ‘,sor[1],’. helyen található.’,sep=”)

    Kedvelés

    • Halihó! Az “a nagyság szerinti” kitételt nem vetted figyelembe a feladat megoldásakor. Most már van megoldás, gyorsan csináltam egyet:)

      Kedvelés

      • Köszönöm a választ, akkor erősen túlbonyolítottam a szövegértelmezést 🙂
        Úgy értelmeztem, hogy a véletlenszám lista értékeit sorba rendezzük, és azt írjuk ki, hogy az a szám hányadik helyen szerepelt az eredeti listában… vagy mi 🙂
        Nem baj, gyakorlásnak jó volt.

        Nem tervezed esetleg a folytatását az oktatóanyagoknak?
        Nagyon könnyen érthetők és elsajátíthatók a videóid, sok más oktatóviedóval ellentétben.

        Kedvelés

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s