Pythonban azt szeretném, hogy bekérek egy listát és onnan eldöntöm, hogy az szám-e, és, ha szám páros-e, ha páros, akkor annak a számnak a kétszeresét kiírom egy másik listába. Valaki segítene?
Nem jött össze.
def paros(lista: list)->int:
db=0
szam=0
string=""
for i in range (len(lista)):
string=string+lista[i]
for x in range(len(string)):
if string[x].isdigit():
if int(string[x])%2==0:
szam = string[x]
lista[db] = int(szam) * 2
db += 1
return lista
def main():
print(paros(list(input())))
if __name__=='__main__':
main()





Tehát bekérsz egy listát, és csak azokat a számoknak írod ki a kétszeresét egy másik listába, amelyek párosak, igaz? Tessék:
a = [int(x) for x in input("Írj be számokat szóközzel elválasztva").split()]
b = [2*x for x in a if x % 2 == 0]
print("A páros számok kétszeresei: " + str(b))





"for i in range (len(lista)):"
Ilyet ne csinálj!
for x in lista:
Ennyi és máris az x-ben van a lista adott eleme, nem kell lista[i]
"string=string+lista[i]"
Ez megint felesleges.
''.join(lista)
Ezzel megkapod a listát stringként.
Viszont ebben a feladatban teljesen felesleges a listát stringgé alakítani, hiszen pont a lista elemeit kell vizsgálni.
De hát visszatértünk az elejére:
for x in lista:
Itt jöhet rögtön x-re az isdigit()
Ne írj még egy if-et, van "and" is :)
Ha egy új listába kell gyűjteni a számokat, akkor deklarálj egy üreset:
uj_lista = []
Utána uj_lista.append(...)
A ... helyére a duplázott érték.
Nem kell db-vel számolni, hogy hanyadik beszúrás.
Ui.: Legközelebb töltsd fel valahova a kódot, mert így átláthatatlan.





Aki lepontozott, az kifejthetné, hogy mivel nem ért egyet...
Csak hogy én is és a kérdező is tanuljunk belőle.





A legjobb megoldás a list comprehension, amit az első is írt. Ha függvényként akarod input helyett akkor így néz ki:
def paros(szamok: list):
return [2 * x for x in szamok if isinstance(x, int) and x % 2 == 0]
isinstance(x, int) helyett lehet ez is: type(x) == int





"A legjobb megoldás a list comprehension"
De aki ilyen kódot ír, mint a kérdező, attól nem várhatod el, hogy megértsen egy list comprehensiont.
Nyilván most kezdte tanulni a Pythont, valószínűleg legelső programozási nyelve.
Előbb azzal kell tisztában lennie, hogy a "for" (és a nyelv többi eleme) hogyan működik.
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!