Kezdőoldal » Közoktatás, tanfolyamok » Egyéb kérdések » Pythonban azt szeretném, hogy...

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?

Figyelt kérdés

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



2022. nov. 8. 21:59
 1/6 Data Scientist ***** válasza:
80%

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

2022. nov. 8. 22:19
Hasznos számodra ez a válasz?
 2/6 Pelenkásfiú ***** válasza:
58%

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

2022. nov. 8. 22:20
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:
Köszönöm a válaszokat, mentek a zöld kezek. :)
2022. nov. 9. 22:24
 4/6 Pelenkásfiú ***** válasza:
100%

Aki lepontozott, az kifejthetné, hogy mivel nem ért egyet...

Csak hogy én is és a kérdező is tanuljunk belőle.

2022. nov. 9. 22:42
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:
100%

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

2022. nov. 23. 21:38
Hasznos számodra ez a válasz?
 6/6 Pelenkásfiú ***** válasza:
100%

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

2022. nov. 24. 09:19
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, 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!