Kezdőoldal » Számítástechnika » Programozás » Szöveges fájlba való eredményt...

Szöveges fájlba való eredményt hogy menthetek így? (python 3.5)

Figyelt kérdés

Elkezdtem csinálni egy fej vagy írás játékot.

Van egy "fej" változóm, ami 0, illetve van egy iras változóm ami szintén 0.

Amikor az eredmény fej, akkor fej = fej+1. Ugyanez igaz az írásra is.

Hogy oldhatom meg az, hogy a játék befejezésekor:

"Akarsz még játszani? (i/n)" elmentse ezt egy fájlba úgy, hogy a következő indításnál abból kiolvassa az előző állást, és ahhoz adja hozzá majd a következő adagot a játék végén?


Jelenleg idáig jutottam:

if uj == "n":

print("Eddig kijött fejek száma: ",fej)

print("Eddig kijött írások száma: ", iras)

f = open('eredmenyfej.txt','w')

f.write(str(fej))

f.close()

f = open('eredmenyiras.txt','w')

f.write(str(iras))

f.close()


Hogy kellene ezt bővíteni?

Illetve az egész elejére mit kellene írni ahhoz, hogy ezekben a txt-kbe található eredmények legyenek a játék kezdetén a változók értékei?



2016. máj. 8. 17:50
 1/6 anonim ***** válasza:

Bővíteni lehet pl. időbélyeggel mentéssel, ellenőrzés, hogy létezik-e a fájl, ha nem, létrehozza, ha igen, hozzáfűzi az új adatot, nem két fájlba ment, hanem egyet használ (mondjuk egy sorban az első érték a fej, a második az írások száma) stb.

A beolvasás meg sima beolvasás, megnyitod olvasásra, read, és hozzárendeled a neked szükséges változóhoz. Egyszerűbb, ha rögtön az elején megnézed, létezik-e az eredményfájl és megnyitod írás-olvasásra ('r+'), így később nem kell megint megnyitni.

2016. máj. 8. 18:45
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

Egy fájlba írd az eredményeket:


with open('eredmeny.txt', 'wt') as file:

. . print(fej, iras, file=file)


Indításnál pedig olvasd ki őket:


with open('test.txt', 'rt') as f:

. . fej, iras = map(int, file.readline().split())


Annyival bővítheted hogy ellenőrzöd hogy létezik e a fájl, és hogy valóban két szám van benne. Ez annyit tesz hogy körbezárod egy try-except szerkezettel és elkapod a FileNotFoundError és a ValueError kivételeket. Feltéve ha ismered a kivételkezelést. Aztán még lehet IOError ami jelzi hogy nem sikerül olvasni illetve bármi egyéb általános Exception váratlan hibáknál. Ezt mind kezeld.


Esetleg még megnehezítheted a csalók dolgát hogy bináris fájlba mented és valami egyedi hash-t is számolsz mellé.

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

Véletlenül elküldtem de a split() függvénybe írjál még egy maxsplit paramétert is hogy biztosan 2 részre bontsa még ha buherálják is a fájlt:

split(maxsplit=1)

2016. máj. 8. 19:30
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
^ Felejtsd el az előzőt, így is úgy is ValueError-t dob.. :)
2016. máj. 8. 19:35
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

Traceback (most recent call last):

File "C:\Users\homepc\Desktop\erme.py", line 9, in <module>

fej, iras = map(int, file.readline().split())

NameError: name 'file' is not defined

2016. máj. 9. 07:09
 6/6 anonim ***** válasza:
0%
Nem azért írtam le hogy copy-pasteld a kódodba. Értsd meg hogy mit csinál és találd ki hogy mi a hiba, már ha nem lenne elég egyértelmű.
2016. máj. 9. 12:08
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!