Kezdőoldal » Számítástechnika » Programozás » Miért nem bírom átváltani az...

Miért nem bírom átváltani az str-t int-té? (2019 oktober eutazas)

Figyelt kérdés

[link]

Biztos vmi facepalm dolog, de en mar fel oraja nezem, es nem haladok sokat vele, szoval megkoszonnem, ha valaki segitene.



2021. máj. 12. 13:50
 1/6 A kérdező kommentje:

Feladat: [link]

Forrasfajl:

[link]

2021. máj. 12. 13:52
 2/6 anonim ***** válasza:
44%
Redukáld le a feladatot olyan röviddé, ami még éppen produkálja a hibajelenséget. Ez általában is jó módszer ilyen hibák megoldására.
2021. máj. 12. 14:06
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

Én azt csináltam, hogy hátulról elkezdtem integerre valtoztani oket. Az ev meg atalakult, de a tobbi az maradt str ugyanazzal a hibauzenettel.

Akkor most ez egy bug vagy what?

2021. máj. 12. 14:10
 4/6 anonim ***** válasza:

A list comprehension kis egysoros kódrészletekre ajánlott (lásd: lista = [i.strip().split() for i in file]) De te egy olvashatatlan, iszonyatosan hosszú egysorossal akarsz megoldani valamit, így ráadásul nem is tudod debuggolni. Használj sima for ciklust, az adatok kezdőértéke legyen [], és appendáld hozzá az aktuális sor feldolgozásának eredményét. A for cikluson belül legyenek külön változóid az egyes elemekre, úgy egyszerűbb lesz a hibakeresés.


Amúgy a "ValueError: invalid literal for int() with base 10: ''" hiba akkor jön elő, amikor egy üres sztringet akarsz integerré alakítani.

2021. máj. 12. 14:50
Hasznos számodra ez a válasz?
 5/6 anonim ***** válasza:
84%

A problémát az okozza, hogy az utasadat.txt.ben vannak olyan sorok, amik a jeggyel rendelkező (a 4. oszlop: JGY) utasokat tartalmazzák.

A jegynek nincsen az utolsó oszlopban érvényességi ideje, csak 0 és 10 közötti darabszáma.


Ha egy ilyen értéknek - legyen az például "10" - utolsó 4 karakterét:

"10"[:4]

vesszük, akkor visszakapjuk azt ilyen formában:

"10"

ami átalakítható egésszé:

10


Viszont ha a 4-6.:

"10"[4:6]

vagy a 6-tól kezdődő:

"10"[6:]

karaktereit vesszük, az egy szimpla üres karakterlánc lesz:

""

amit nem lehet az int() segítségével egésszé konvertálni, ezért dob hibát.


Egy megoldási lehetőség például, hogy a szerint alakítod ki az "adatbázisod" egy-egy rekordját, hogy milyen hosszú a legutolsó oszlop:

[link]

2021. máj. 12. 15:41
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
Köszönöm válaszaitokat.
2021. máj. 12. 17:53

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!