Mi a gond a Pythonban írt kódommal?
Feladat: Írj egy Python programot, amely bekér három egész számot a felhasználótól és kiírja a képernyőre, hogy mind a három páros szám-e!
szamok = []
a = int(input("Add meg az első egész számot!"))
b = int(input("Add meg a második egész számot!"))
c = int(input("Add meg a harmadik egész számot!"))
szamok.extend((a, b, c))
for i in szamok:
if szamok % 2 == 0:
print("Nem tartalmaz páratlant")
if szamok % 2 == 1:
print("Tartalmaz páratlant")
Hiba üzenet a 12. sorban: TypeError: unsupported operand type(s) for %: 'list' and 'int'
Ez még csak egy félig kész kód. Úgyhogy tudom, hogy vannak hibái, de ezt a típus hibát meg szeretném oldani. Azt is tudom, hogy ezt egyszerűbben is meg lehet oldani és akkor már meg is lenne, de úgy fejlődök ha nehezebb módot választom. Majd amikor nem hobbiból programozok választom sz egyszerűbbet.
Nekem jónak tűnik (nem profi vagyok, hanem szerintem olyan szinten, mint te). Próbáltad beljebb húzni az if-et Tab-al vagy csereld fel a printeket meg az if-eket. (Valószínűleg akkor se lesz jó, de egy próbát meg ér).
Milyen IDE-ben írod a kódot?
Én is arra gondoltam, mint amit a harmadik válaszoló irt, de akkor ezt az üzenetet kapom a 12. sorban:
"Index error: List index out of range"
Nem tudom jó-e a szintaktika:
for i in szamok:
if szamok[i] % 2 == 0:
print("Nem tartalmaz páratlant")
if szamok[i] % 2 == 1:
print("Tartalmaz páratlant")
A tabok be cannak húzva, csak mikor kijelölöm és beillesztem akkor nem látszik.
i az elem, nem az index.
if i % 2 == 0
Az egész úgy szar ahogy van. Az összes elemnek párosnak kell lennie, a te programod viszont elemenként írja ki hogy melyik páros és melyik páratlan.
Ez a helyes kód:
if any(szam % 2 for szam in szamok):
----print("Tartalmaz páratlant")
else:
----print("Nem tartalmaz páratlant")
Vagy ha kicsit bővebb lére eresztve akarod csinálni, akkor:
for szam in szamok:
----if szam % 2:
--------print("Tartalmaz páratlant")
--------break
else:
----print("Nem tartalmaz páratlant")
Ha találsz páratlant, akkor kiírod hogy találtál, és megszakítod a ciklust. Ha végigmegy a ciklus break nélkül, akkor továbblép az else ágra (vigyázat, ez nem az if-hez tartozó else, hanem a for-hoz, ami a ciklus végigfutása esetén aktiválódik) és kiírja hogy nem tartalmaz páratlant.
Tisztában voltam azzal, hogy elemenként írja ki. Először így akartam megoldani, majd később gondoltam ki hogyan lehet úgyhogy az egész elemet vizsgálja. Így született valami nagyon hasonló, mint a te második verziód:
for i in szamok:
if i % 2 == 1:
print("Nem")
break
else:
print("Igen")
De amúgy ez sem jó, mert ha az összes szám páros akkor háromszor írja ki hogy "igen". Nyilván azért mert háromszor ér körbe a ciklus. Most azon gondolkozom, hogy az else után mit írjak, hogy végig menjen a ciklus, de csak egyszer írja ki.
Végül egy teljesen más kód született, ami már gond nélkül működik:
parosSzamok = []
szamok = []
a = int(input("Add meg az első egész számot! "))
b = int(input("Add meg a második egész számot! "))
c = int(input("Add meg a harmadik egész számot! "))
szamok.extend((a, b, c))
for i in szamok:
----if i % 2 == 0:
--------parosSzamok.append(i)
----else:
--------pass
x = len(parosSzamok)
if x == 3:
----print("Igen")
else:
----print("Nem")
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!