Kezdőoldal » Számítástechnika » Programozás » Mi a gond a Pythonban írt...

Mi a gond a Pythonban írt kódommal?

Figyelt kérdés

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.



2020. jún. 4. 07:16
1 2
 1/13 anonim ***** válasza:
100%
Olvasd el a hibaüzenetet. A modulo operátor bal oldala egy lista a kódodban.
2020. jún. 4. 07:48
Hasznos számodra ez a válasz?
 2/13 anonim válasza:
8%

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?

2020. jún. 4. 08:46
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:
100%
A lista elemeit kell osztani, nem a listat
2020. jún. 4. 08:55
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:
Atomban írom.
2020. jún. 4. 09:07
 5/13 A kérdező kommentje:

É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.

2020. jún. 4. 09:13
 6/13 anonim ***** válasza:
100%

i az elem, nem az index.

if i % 2 == 0

2020. jún. 4. 10:40
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:
Óóó b@szki tényleg.. nem hiszem el.. Köszönöm szépen az észrevételt!
2020. jún. 4. 10:42
 8/13 anonim ***** válasza:
34%

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.

2020. jún. 4. 17:38
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:

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.

2020. jún. 4. 19:50
 10/13 A kérdező kommentje:

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")

2020. jún. 4. 22:02
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!