Agyamra megy már ez a szám

A múltkor, azt hiszem, túlzottan is jó fejek voltunk a felhasználóval. Most komolyan, addig találgathat, amíg úri kedve diktálja? Na ezt azért nem!

Legyen mondjuk 3 lehetősége. Elvileg minden gond nélkül meg tudod írni a programot te is, ha

Szóval próbáld csak meg! És ha nem megy, itt a videó:

 


gondolt_szám = 4

kitalálta = False
elhasznált_lehetőségek = 0

while not kitalálta and elhasznált_lehetőségek < 3:
    tipp = input('Melyik számra gondoltam 1 és 5 között? ')
    tipp = int(tipp)
    elhasznált_lehetőségek += 1
    if tipp == gondolt_szám:
        kitalálta = True

print('Pápá!')

A programunkban az újabb kérdést egyszerre két feltételhez kötjük:

  1. még ne legyen kitalálva a szám ÉS
  2. még ne legyen három próbálkozás

Amíg (tudod: while) ez a két feltétel egyszerre fennáll, belépünk a ciklusba. Ha bármelyik bebukott, többé nem kérdezünk.

Feladatok

F0008a: Helyezz el dicséretet a programban, meg vigasztalást is! (Megoldás itt.)

F0008b: Amikor épp nem jó a tipp, írd ki, hogy mennyivel tér el a felhasználó! (Megoldás az expand source-ra kattintva.)


gondolt_szám = 4

kitalálta = False
elhasznált_lehetőségek = 0

while not kitalálta and elhasznált_lehetőségek < 3:
    tipp = input('Melyik számra gondoltam 1 és 5 között? ')
    tipp = int(tipp)
    elhasznált_lehetőségek += 1
    if tipp == gondolt_szám:
        kitalálta = True
    else:
        print('Nem oké, az eltérésed:', abs(gondolt_szám - tipp))

print('Pápá!')

F00008c: Amikor épp nem jó a tipp, írd ki, hogy nagyobb vagy kisebb számot kell tippelni! (Megoldás az expand source-ra kattintva.)


gondolt_szám = 4

kitalálta = False
elhasznált_lehetőségek = 0

while not kitalálta and elhasznált_lehetőségek < 3:
    tipp = input('Melyik számra gondoltam 1 és 5 között? ')
    tipp = int(tipp)
    elhasznált_lehetőségek += 1
    if tipp == gondolt_szám:
        kitalálta = True
    elif tipp > gondolt_szám:
        print('Tippelj kisebbet!')
    else:
        print('Tippelj nagyobbat!')

print('Pápá!')

F0008d: A tesód szülinapi szendvicsét csinálod. A tesód szerint akkor jó egy szendvics, ha:

  • Van benne legalább egy fajta hús,
  • Legyen benne marha vagy sonka, de együtt ne,
  • Ha a szendvicsben van pulykahús, akkor legyen benne sajt is.

Írj programot a szendvics “jóságának” eldöntésére! A program elején egyesével kérdezd meg, hogy van-e benne marha, pulyka, sonka, sajt, és ezeket tárold logikai változókban, majd írd meg a megfelelő if-et! (Megoldás itt. Ez, és a következő két feladat innen származik, köszönet érte!)

F0008e: A tesód szülinapi almás pitéjét csinálod. A tesód szerint akkor jó egy almás pite, ha:

  • nincs benne egyszerre szegfűbors és szerecsendió,
  • ha a pitébe tettünk fahéjat, akkor kell bele szerecsendió is,
  • ha nem tettünk fahéjat, akkor nem lehet benne szerecsendió sem.

Írj programot a pite “jóságának” eldöntésére! A program elején egyesével kérdezd meg, hogy van-e benne szegfűbors, szerecsendió illetve fahéj, és ezeket tárold logikai változókban, majd írd meg a megfelelő if-et! (Megoldás itt.)

F0008f: Amanda, Borbála és Cilike piizzát rendelnek, de jó nagyot, és egyet, egy közöset. A választható feltétek: olívabogyó, pepperoni és sonka.

  • Amanda az olivabogyós pizzát csak akkor eszi meg, ha pepperoni is van rajta,
  • Borbála csak pepperonis pizzát és csak sonka nélkül eszik, az olíva mindegy neki,
  • Cilike pedig csak olyan pizzát hajlandó enni, amin pontosan kétféle feltét van.

Írj programot, amely segít eldönteni, hogy milyen feltétet kérjenek! (Megoldás itt. A videóban megnézzük, hogy igazságtáblával miként egyszerűsíthető a feltételek hosszú sora.)

 

A múltkor megismerkedtünk a while-ciklussal. Legközelebb egyismeretlenes egyenletet oldunk meg while-ciklussal.

Reklámok

Agyamra megy már ez a szám” bejegyzéshez ozzászólás

  1. Sziasztok

    Szerintem a pizzás megoldásban van egy kis hiba,mert ha csak pepperoni van a pizzán az Amandának megfelelő, bár ez a végeredményen nem változtat mert Cillikén elbukik.

    Vagy nem jól gondolom?

    Kedvelés

  2. Sziasztok! A szendvicses feladatnál nekem a megoldásban mutatott módra magamtól nem állt rá az agyam, ez a megoldás jött össze:

    marha = input(‘Van a szendvicsben marhahús? (i/n)….’)
    sonka = input(‘Van a szendvicsben sonka? (i/n)….’)
    pulyka = input(‘Van a szendvicsben pulyka? (i/n)….’)
    sajt = input(‘Van a szendvicsben sajt? (i/n)….’)

    if ((marha == ‘i’ and sonka == ‘i’) or (pulyka == ‘i’ and sajt == ‘n’)):
    print(‘\nEz a szendvics rossz.’)
    elif ((marha == ‘i’ or sonka == ‘i’) or (pulyka == ‘i’ and sajt == ‘i’)):
    print(‘\nEz a szendvics király!!’)
    else:
    print(‘\nEz a szendvics rossz.’)

    A videó után már megvilágosodtam, de a logikai változókat még szokni kell…

    Egyébként nagyon jól magyarázol és a feladatok is szuperek! Köszi!

    Kedvelés

    • Ezt a “szokni kell” dolgot nagyon jól látod. Talán a legtöbb programozó matekos, ami nekem nem ment kiválóan, ellenben könnyen tanultam nyelveket – mármint idegen nyelveket. A programozást is kicsit így közelítem meg, és így könnyen értelmezhető a dolog: olyan, mint ha egy idegen nyelv logikájára igyekeznél ráérezni – igen, erre is rá lehet érezni:)

      Kedvelés

      • Kedves Ráérsz! Nagyon klasszak az oktatóvideóid! Igazad van, hasonló a tanulása, mint egy idegen nyelvnek. Annyi a különbség, hogy itt teljes mértékben logikára épülő szabályok vannak. A python tisztára olyan mint ha csak angolul kéne olvasni. Nagyon köszönöm, hogy teljesen ingyen szánsz időt arra, hogy, megtanuljunk programozni ezen a nyelven. Érthetően magyarázol tényleg. Az iskolánkban tanítanak pythont van egy pár ember aki le is érettségizett belőle. Az a tanár aki tanítja az is innen veszi a leckéket. Bár én magamnak tanulok.

        Kedvelik 1 személy

  3. Szia. A szendvicses feladatnál a végén:

    if (marha or pulyka or sonka) and \
    ((marha and not sonka) or (sonka and not marha)) AND \
    (pulyka and sajt):
    print(‘Fincsi’)
    else:
    print(‘Fúj’)

    A nagybetűs AND esetén akkor is rossz lesz a szendvics, ha van benne sajt. Ha átállítom or-ra, akkor működik.

    És nekem nem esik le miért kell még az utolsó feltételbe a
    ((pulyka and sajt) or (not pulyka)):
    a második rész, mikor anélkül is megy.

    Kedvelés

    • Örülnék, ha videóra vennéd, és feltöltenéd akárhova, mert jelenleg biztos vagyok benne, hogy valamit (esetleg több dolgot is) benéztél.

      Kedvelés

  4. Szia/Sziasztok!

    Nem is oly reg elhataroztam,h belemerulok a Python programozasba es be kell valljam, nagyon orulok,h megtalaltam az oldalad.
    Mivel semmilyen programozoi tudassal nem rendelkeztem eddig es mindig kinainak tunt barmilyen nyelvu konyv olvasasa is, kezdtem feladni,h en bmikor is programokat fogok gyartani…
    DE MOST!!! :))
    Halas koszonetem Neked, elvezem a tanulast a videoid segitsegevel es majd kiugrottam a borombol, amikor az alabbiak alapjan, de SIKERULT megcsnalnom a topik legelso feladatat a video megtekintese nelkul!!! :)))))))
    Nem szep, de szamomra annal nagyobb siker es orom!

    Koszonom megegyszer!
    Nem birom abbahagyni, remelem vegig vezetsz mindenen, amit Pythonnal tudni lehet…!? :))

    Udv.:
    Rfv Ijn

    Es persze a programom.. 🙂

    kitalalando_szam = 5
    lehetoseg = 3
    lepes = 0
    tipp = 0

    while (lehetoseg – lepes != 0) and tipp != kitalalando_szam:
    tipp = int(input(‘Tippeld meg melyik szamra gondoltam 1 es 10 kozott, 3 lehetoseged van! ;)\nTipp: ‘))
    lepes += 1

    if tipp != kitalalando_szam and lehetoseg – lepes != 0:
    print(‘Mar csak’, lehetoseg – lepes, ‘lehetoseged van tippelni..’)
    if lehetoseg – lepes == 0 and tipp != kitalalando_szam:
    print(‘Sajnalam, talan legkozelebb..’)
    else:
    print(‘Ugyes vagy, kitalaltad!’)

    Asszonyon tesztelve! 😀

    Kedvelik 2 ember

  5. Csiszoltam rajta,h szebb legyen.. 🙂

    kitalalando_szam = 5
    lehetoseg = 3
    lepes = 0
    tipp = 0
    print(‘Tippeld meg melyik szamra gondoltam 1 es 10 kozott, 3 lehetoseged van! ;)’)
    while (lehetoseg – lepes != 0) and tipp != kitalalando_szam:
    lepes += 1
    tipp = int(input(‘Tipp: ‘))

    if tipp != kitalalando_szam and lehetoseg – lepes != 0:
    print(‘Mar csak’, lehetoseg – lepes, ‘lehetoseged van tippelni..’)
    if lehetoseg – lepes == 0 and tipp != kitalalando_szam:
    print(‘Sajnalam, talan legkozelebb..’)
    else:
    print(‘Ugyes vagy, kitalaltad!’)

    Kedvelés

  6. Hát ezzel a szendviccsel megszenvedtem. 🙂
    Végül ez lett a megoldásom (biztosnem túl elegáns):

    # Mi van a szendvicsben?

    if input(‘Van benne marha? (i/n) ‘) == ‘i’:
    marha = True
    else:
    marha = False

    if input(‘Van benne pulyka? (i/n) ‘) == ‘i’:
    pulyka = True
    else:
    pulyka = False

    if input(‘Van benne sonka? (i/n) ‘) == ‘i’:
    sonka = True
    else:
    sonka = False

    if input(‘Van benne sajt? (i/n) ‘) == ‘i’:
    sajt = True
    else:
    sajt = False

    print(‘Jó a szendvics?’)

    if (marha == True and sonka == False) or (marha == False and sonka == True) or (pulyka == True and sajt == True):
    if (pulyka == True and sajt == False):
    print (‘Hiányzik a sajt!’)
    else:
    print(‘Ez így tökéletes!’)
    else:
    print(‘Ez így nem az igazi!’)

    Nagyon sokszor hibáztam, pedig a feltétel sort viszonylag gyorsan kitaláltam, de a sajt hiányát nehezem sikerült jól belerakni. Illetve a behúzásokat is gyakran elrontottam. Ezen már nem látszik, de közben sokkal kaotikusabb volt. 😀

    Kedvelik 1 személy

  7. Üdv!
    Az én változatom után természetesen kipróbáltam a videóban láthatót is. Viszont az a csak pulyka+sajtra, (ami elvileg jónak kellene legyen) nekem ‘Hulladék!’-ot adott!
    Csak pont ezt a variációt nem tesztelted a videóban.
    Szerintem a “((marha and not sonka) or (sonka and not marha))” sort ki kellene egészíteni így:
    “((marha and not sonka) or (sonka and not marha) or (not marha and not sonka))
    Nálam ezzel a megoldással működött.

    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 )

w

Kapcsolódás: %s