Kezdőoldal » Számítástechnika » Programozás » Hogy olvasok így Pythonban?

Hogy olvasok így Pythonban?

Figyelt kérdés

Egy mentés - betöltés funkciót csinálok a szöveges játékomnak és egy picit elakadtam.


A mentésem így néz ki:

with open('alap_save.txt', 'w') as file:

...file.write("" +pNev+ "\n" +str(pKaszt)+ "\n" +str(pEro)+ "\n" +str(pElet)+ "\n" +str(pUgyesseg)+ "\n" +str(pErtelem)+ "\n" +str(pStamina)+ "\n" +str(pCelzas)+ "\n" +str(pPenz)+ "\n" +str(pSzint)+ "\n" +str(pExp)+ "\n" +str(kepesPont)+ "\n" "")

...file.close


A mentés után a txt tartalma ez:

Inid

1

12

550

5

1

25

1

2

4

199

1



Miként tudnám megoldani azt, hogy a beolvasás után is a megadott változóhoz a megfelelő érték társuljon?


Mentés sorrendje:

pNev

pKaszt

pEro

pElet

pUgyesseg

pErtelem

pStamina

pCelzas

pPenz

pSzint

pExp

kepesPont



2016. júl. 6. 16:05
 1/8 anonim ***** válasza:
100%

Ha jol remlik van ini irasi es olvasasi tamogatas az alap Python libben is.

Haszanld azt, jobban jarsz.

2016. júl. 6. 16:12
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:

file.write("" +pNev+ "\n" +str(pKaszt)+ "\n" +str(pEro)+ "\n" +str(pElet)+ "\n" +str(pUgyesseg)+ "\n" +str(pErtelem)+ "\n" +str(pStamina)+ "\n" +str(pCelzas)+ "\n" +str(pPenz)+ "\n" +str(pSzint)+ "\n" +str(pExp)+ "\n" +str(kepesPont)+ "\n" "")


Ez borzasztó átláthatatlan. Ne.

2016. júl. 6. 16:27
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:

Egyetértek az előző válaszolókkal, ebből hosszú távon csak baj lehet.


De hogy a konkrét kérdésre is válaszoljak, elképzelésem sincs miért nem sorrendben menti le, ha egy stringbe írod először, és a stringet mented le gyanítom működni fog. Valahogy így


mentes = "sok atlathatatlan marhasag"

file.write(mentes)

file.close

2016. júl. 6. 16:37
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:

Én egészen biztos, hogy egy dictionary-ben tárolnám az adatokat, és json formátumban menteném el, ahonnan nagyon egyszerűen lehet visszaolvasni és így az értékek címkéi is megmaradnak miközben nem kell vesződni a beolvasással.

[link]

2016. júl. 6. 16:46
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

A sorrenddel a txt-ben nincs gond.

Amikor beolvasok, akkor a kapott értéket szövegként értelmezi és nem számokként.

Miként oldható meg, hogy számként értelmezze őket? kiv. a pNev (Inid)

2016. júl. 6. 16:57
 6/8 anonim ***** válasza:
100%
google("python string to int);
2016. júl. 6. 17:41
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
100%

Azért a with kulcsszóval nyitod meg hogy a végére ne kelljen close()-t tenni.


Int -> String

str(1234)


String -> Int

int("1234")


Én személy szint azt ajánlom hogy a pickle modult használd. Le tud menteni egy objektumot, majd visszatudja olvasni a fájlból. A mások által írt JSON is jó.


* * * Mentés: * * *


data = (pNev, pKaszt, pEro, pElet, pUgyesseg, pErtelem,

. . . . pStamina, pCelzas, pPenz, pSzint, pExp, kepesPont)


with open("alap_save.txt", "wb") as f:

. . pickle.dump(data, f)


* * * Beolvasás: * * *


with open("alap_save.txt", "rb") as f:

. . data = pickle.load(f)


(pNev, pKaszt, pEro, pElet, pUgyesseg, pErtelem, pStamina,

. . pCelzas, pPenz, pSzint, pExp, kepesPont) = data

2016. júl. 6. 19:05
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:

Szóval én továbbra is két dolgot ajánlanék megfontolásra: ezek annyira összetartozó változók, hogy egyszerűsíti a kódot, ha egy dictionary-ben tárolod. Bármit csinálni akarsz velük, egy objektumként tudod kezelni őket, és perszer akármelyik értéket bármikor el lehet érni. Továbbá a JSON megoldást azért javaslom a pickle-lel szemben, mert a JSON egy szabvány adat formátum, ha úgy alakul, bármilyen nyelven írt programmal el lehet érni, illetve mivel txt-ben van elmentve, editorral simán lehet módosítani.


Itt egy egyszerű implementáció, ami bemutatja, hogy hogyan érdemes ezt csinálni: http://pastebin (pont) com/NGHdL8X8


Egyébként így néz ki a JSON mentés:

{"pErtelem": 1, "kepesPont": 1, "pSzint": 4, "pKaszt": 1, "pEro": 12, "pNev": "Inid", "pExp": 200, "pElet": 550, "pCelzas": 1, "pStamina": 25, "pUgyesseg": 5, "pPenz": 2}

2016. júl. 6. 21:37
Hasznos számodra ez a válasz?

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!