Problem mit der ausgabe eines gespeicherten wertes

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.
Antworten
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

hi leute, ich versuch ein einfaches programm zu schreiben, wo man einfach eintragen kann, was man monatlich an plus und minus gemacht hat, und zum schluss angezeigt wird, wie gut man gewirtschaftet hat. ich scheiter aber schon am begrüßungstext, und zwar soll das programm selbst entscheiden ob der user schonmal im programm war oder nicht, dass funktioniert, wenn er nicht drin war, dann soll der user seinen namen eingeben, und dieser wird dann gespeichert, beim nächsten aufruf, wird die person dann mit namen begrüßt, und anschließend kommt "was willst du tun", aber leider kommt der letzte text nicht, es kommt immer nur die begrüßung.ich zeig einfach mal den code.

Code: Alles auswählen

# -*- coding: cp1252 -*-
def eins():
    f=open(r'C:\Python26\finanzen\name.txt','r')
    name = f.read()
    if name == '':
        f=open(r'C:\Python26\finanzen\name.txt','w')
        print "dass ist dein erster besuch dieses Programmes"
        name = str(raw_input("bitte geben sie ihren namen ein"))
        f.write(name)
        name = f.read()
    elif name != '':
        print ("Hallo "+name+" was willst du tun?")
als ausgabe kommt folgendes

>>> eins()
dass ist dein erster besuch dieses Programmes
bitte geben sie ihren namen einfantacoca
>>> eins()
Hallo fantacoca
>>>
und nach dem komischen zeichen kommt dann nix mehr...kann mir bitte jemand helfen?(nach der begrüßung ist ein quadrat,dieses wird hier leider nicht angezeigt)
mfg fantacoca
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Schau dir erst noch einmal genau an, wie man mit Dateien umgeht - man schließt diese auch wieder, insbesondere bei Python 3 kann man da mit "with" arbeiten. Zweitens ist so etwas hier sinnlos str(raw_input()), da ein String nicht mehr als ein String sein kann.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Das 'f' wird in Zeile 6 überschrieben und aus der in dieser Zeile zum Schreiben geöffneten Datei kann man nicht in Zeile 10 lesen.

Stefan
Fantacoca
User
Beiträge: 23
Registriert: Donnerstag 15. Oktober 2009, 14:53
Kontaktdaten:

ich weiss eigentlich dass man die schließt, nur immer wenn ich den quellcode mit schließen eigegeben hatte, funktionierte garnixmehr...komischerweise fun, ktioniert es jetzt obwohl ich es so hab wie am anfang o.O erklär mir dat mal einer...mein pc ist tagesformabhänig

python 3 nutz ich nicht,,,,arbeite noch mit 2.6 daher wird das with für mich ausfallen
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@Fantacoca: "with" funktioniert auch in 2.6.
In specifications, Murphy's Law supersedes Ohm's.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

with funktioniert auch unter python 2.6

den Rest, deines Satzes, versteh ich nicht

//Edit: Pillmuncher was schneller
the more they change the more they stay the same
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Code: Alles auswählen

if name == '':
    ...
elif name != '':
    ...
:?:
Da hätte doch ein einfaches else gereicht.
MfG
HWK
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Wenn du kein Python 3 verwendest, dann frage ich mich, was das hier soll:

Code: Alles auswählen

print("Hallo "+name+" was willst du tun?")
Antworten