Már megint gondoltam egy számra

Volt már olyan, hogy gondoltunk egy számra. Akkoriban azért, hogy megismerkedjünk az elágazással. A programunk “gondolt” egy számra – azaz megmondtuk, hogy mire gondoljon. Megkérdezte, hogy tudjuk-e, és ha eltaláltuk, megdicsért, ha nem, akkor kifejezte rosszallását.

Na eddig szép és jó, de kérdem én, hát fair az, hogy csak egy tippelési lehetőség van?? HÁT FAIR EZ ÍGY??? Hát persze, hogy nem!

Szerencsére, ahol nagy a szükség, ott közel a segítség ;). Először fölfogjuk, hogy mit akarunk csinálni, és azt meg azzal kezdjük, hogy tanulmányozzuk ezt a folyamatábrát:

P0007 előtanulmány folyamatábra

Mondjuk el szépen, mit látunk:

  1. elindulunk
  2. egy V nevű változónak 1-et adunk értékül
  3. megnézzük, hogy a V-ben 100 van-e (ugyanmár, hogy lenne?)
  4. ha NEM, akkor V értékét eggyel növeljük, és VISSZAMEGYÜNK oda, hogy megnézzük, mennyi van V-ben.
  5. ha IGEN, akkor kiírjuk, hogy “Végre 100!”

Hányszor fogunk visszamenni? Nem, nem 100-szor. A 99 a helyes megoldás:)

Lássuk ezt kódban, “élő”-ben:

Ha fölfogtuk, próbáljuk ki a kódot, aztán térjünk vissza az eredeti problémára: hogyhogy csak egy lehetőségünk van kitalálni azt a nyomoronc számot?!

Szerencsére nem sokáig van ez már így, hanem itt a megoldás:

 


gondolt_szám = 4

kitalálta = False # True (igaz) vagy False (hamis) lehet az értéke

while not kitalálta:
    tipp = input('Melyik számra gondoltam 1 és 5 között? ')
    tipp = int(tipp)
    if tipp == gondolt_szám:
        kitalálta = True
print('Pápá!')

Mit tanultunk?

  • A while szótól kezdve ciklust (angolul: loop) alakítunk ki. (Szoktuk úgy is mondani, hogy ciklust szervezünk.)
  • A Python onnan tudja, hogy mi van a ciklus belsejében, és mi a ciklus után, hogy ami a ciklus belsejében van, azt beljebb kezdjük, ami meg a ciklus után van, azt nem kezdjük beljebb. Ugyanilyet láttunk az if esetében is.
  • A ciklus belsejét ciklusmagnak nevezzük, azaz a ciklusmagot kezdjük beljebb.
  • A ciklusba való belépésnek feltétele van – csak akkor lépünk be a ciklusba, ha ez a feltétel teljesül.
  • A feltételt minden ismétlődéskor újra meg újra megvizsgálja a Python, és ha nem teljesül, akkor nem megy be a ciklusba, hanem utána folytatja a kód végrehajtását.

És mintegy mellékesen:

  • A “nem egyenlő” művelet jele a felkiáltójel-egyenlőségjel. 2 != 3. Ez a helyzet.
  • Megismerkedtünk a harmadik változótípusunkkal, a logikai típussal. (Eddig str és az int volt.)
  • A logikai típus angolul boolean, a Python ennek örömére bool-nak hívja. Ne keressünk nyelvi kapcsolatot a logikai és a boolean szó között. A boolean annyit tesz: Bool-i, és Geroge Bool-ról van elnevezve.
  • A bool típusú változó értéke True (igaz) vagy False (hamis) lehet
  • A Pythonban nem szép, ha egy logikai típusú változó értékét egyenlőségvizsgálattal igykszünk kideríteni.. Ha piros = True,  akkor
    • nem szép a while piros == True:, helyette csak annyit írunk, hogy while piros:
    • nem szép a while piros == False:, helyette csak annyit írunk, hogy while not piros:
    • és ugyanez áll if-re is: if piros, if not piros. Majd még gyakoroljuk:)

Feladatok

F0007a: Írjd meg azt a programot, ami kiírja az első száz pozitív egész szám négyzetét (a hatványozás jele a két csillag, azaz kettő a köbön: 2**3) ! (Megoldás az expand source-ra kattintva.)


szám = 1
while szám <= 100:
    print(szám**2)
    szám += 1 # ez ugyanaz, mintha "szám = szám + 1"-et írunk volna

F0007b: Írjd meg azt a programot, ami kiírja a 100-nál kisebb páros természetes számokat! (Megoldás az expand source-ra kattintva.)


szám = 0
while szám < 100:
    print(szám)
    szám += 2

F0007c: Írd meg azt a programot, ami kiírja a háromjegyű páratlan számokat!

F0007d: Írd meg azt a programot, amelyik addig kérdezgeti, hogy “De ugye szeretsz?”, amíg azt nem válaszoljuk neki, hogy “Szeretlek”(vagy amíg félbe nem szakítjuk….)! (Megoldás itt.)

F0007e: Írj programot, ami megkérdi a felhasználótól, hogy hánytól hányig írja ki a számokat (és aztán írd is ki őket)!

F0007f: Az előző programot írd úgy át, hogy kérdezze meg azt is, hogy hányasával írja ki a számokat!

F0007g: Az előző programot írd úgy át, hogy kérdezze meg azt is, hogy hányadik hatványukat tüntesse fel a szám mellett! (Megoldás az expand source-ra kattintva.)


mettől = input('Honnan kezdve írjam ki a számokat? ')
meddig = input('Meddig írjam ki a számokat? ')
hányasával = input('Hányasával írjam ki a számokat? ')
hatványkitevő = input('Hányadik hatványukat írjam a számok mellé? ')

mettől = int(mettől)
meddig = int(meddig)
hányasával = int(hányasával)
hatványkitevő = int(hatványkitevő)

szám = mettől #dolgozhatnánk a mettől változóval is, csak így jobban követhető, hogy mi történik

while szám <= meddig:
    print(szám, szám**hatványkitevő)
    szám = szám + hányasával

 

A múltkor összetett feltételeket fogalmaztunk meg. Legközelebb összetett feltételű ciklusokat írunk.

 

Advertisements

Már megint gondoltam egy számra” bejegyzéshez ozzászólás

    • F0007e megoldása:
      hanytol = int(input(‘Hánytól írjam ki a számokat? ‘))
      hanyig = int(input(‘És meddig? ‘))
      while (hanytol <= hanyig):
      print(hanytol)
      hanytol += 1

      Kedvelés

      • F0007f megoldása:
        hanytol = int(input(‘Hánytól írjam ki a számokat? ‘))
        hanyig = int(input(‘És meddig? ‘))
        hanyasaval = int(input(‘És milyen lépésenként írjam ki főnök? ‘))
        while (hanytol <= hanyig):
        print(hanytol)
        hanytol += hanyasaval

        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 )

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 )

Google+ kép

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

Kapcsolódás: %s