Highscore?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Yggdrasil

Highscore?

Beitragvon Yggdrasil » Mittwoch 16. Juni 2004, 19:51

Und gleich noch ne Frage....
Wie kann ich einen Highscore für ein einfaches Matheübungsprogramm schreiben? Geht das mit open?
Nur versteh ich das mit readline() nicht. :(
Vielen Dank
Benutzeravatar
NOTZE
User
Beiträge: 106
Registriert: Mittwoch 21. Januar 2004, 20:28

Re: Highscore?

Beitragvon NOTZE » Mittwoch 16. Juni 2004, 19:53

Yggdrasil hat geschrieben:Und gleich noch ne Frage....
Wie kann ich einen Highscore für ein einfaches Matheübungsprogramm schreiben? Geht das mit open?
Nur versteh ich das mit readline() nicht. :(
Vielen Dank


Und ich versteh deine frage nicht :?: :?:
Yggdrasil

Beitragvon Yggdrasil » Mittwoch 16. Juni 2004, 20:00

Oh...tut mir leid, war wohl ein bischen wirr.
Ich hab ein kleines Rechenübungsprogramm geschrieben bei dem du Punkte bekommst. (Je schneller du bist usw. desto mehr)
Ich würd jetzt gerne meinen Punktestand in einen Highscore eintragen können.
Es gab da auf einer Seite so etwas ähnliches, und da wurde es mit open(Test.txt,r) und readlines() oder so ähnlich gemacht.
Es war aber zu kurz gefasst als dass ich es verstanden hätte.
Kann mir jemand nen Tipp geben?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 16. Juni 2004, 20:30

Hi Yggdrasil,

open ist veraltet, dafür gibts seit 2.0 file. Ich gehe mal davon aus, daß du die Scores intern in einem Dictionary hast.

schreiben einer Datei

Code: Alles auswählen

score = {"Hans" : 100, "Frieda" : 120, "Max" : 80}
f = file("score.txt", "w") # Datei öffnen
for key, value in score.items(): # Schlüssel-Werte-Paare aus Dictionary lesen
    f.write("%s\t%i\n" % (key, value)) # Als String in Datei schreiben
f.close() # Datei schließen

lesen einer Datei

Code: Alles auswählen

score = {}
f = file("score.txt", "r") # Datei öffnen
for line in f: # Jede Zeile der Datei lesen
    data = line.strip().split("\t") # Whitespaces und "\n" am Ende löschen und am "\t" aufsplitten
    score[data[0]] = int(data[1]) # Daten ins Dictionary score einfügen
f.close() # Datei schließen
print score # zum Testen


Gruß

Dookie
Der Gast

Beitragvon Der Gast » Mittwoch 16. Juni 2004, 20:32

Ich vermute mal, dass du das hier meinst, aber so ganz klar ist mir dein Problem auch nicht.

Hier mal ein Beispiel, wie du einen Wert in eine Datei schreibst:

Code: Alles auswählen

file = open("C:/Test.txt", "w")
highscore = "5"
file.write(highscore)
file.close()


Um den entsprechenden Wert wieder auszulesen, würde ich es dann so machen:

Code: Alles auswählen

file = open("C:/Test.txt")
highscore = file.readline()
file.close()


Vielleicht habe ich ja damit den Nagel auf den Kopf getroffen ;-)

MfG
Der Gast
Gast

Beitragvon Gast » Mittwoch 16. Juni 2004, 21:20

Danke Dookie.....ich glaub ich bin einfach zu doof :lol:
Was meinst du mit: in einem internen Dictionary?
Ich hab die Punkte einfach als eine Variable definiert...
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 16. Juni 2004, 21:28

ich dachte du hast da mehrere Leute, die das Programm auf dem gleichen Rechner verwenden. Dann könntest Du die Scores für jeden in einem Dictionary wie bei meinem Beispiel gezeigt speichern. wenns nur eine Variable ist, ists noch einfacher.

Code: Alles auswählen

def write_score(score):
    f = file("score.txt","w")
    f.write(str(score))
    f.close()

def read_score():
    f = file("score.txt", "r")
    score = int(f.read()) # falls score eine Fliesskommazahl ist score = float(f.read())
    f.close()
    return score



Gruß

Dookie
Grögh de Helsen

open is file

Beitragvon Grögh de Helsen » Freitag 25. Juni 2004, 12:56

Dookie hat geschrieben:open ist veraltet, dafür gibts seit 2.0 file.


>>> open is file
True
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Freitag 25. Juni 2004, 15:01

Hi. Das denkt man so... in Wirklichkeit ist es umgekehrt: die Funktion open gibts nicht mehr und open ist nur noch ein Alias für die Klasse file. Diesen Alias gibt es aber auch nur wegen Abwärtskompatibilität und er kann in späteren Versionen wegrationalisiert werden. So kann so nämlich von file eigene Klassen ableiten, von open in früheren Pythonversionen nicht.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 29. Juni 2004, 17:59

Also wenn dann kommt erstmal DeprecationWarning, bevor es rausgenommen wird.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: __deets__