Seite 1 von 1

Problem mit der ausgabe eines gespeicherten wertes

Verfasst: Sonntag 8. November 2009, 10:14
von Fantacoca
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

Verfasst: Sonntag 8. November 2009, 10:33
von nemomuk
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.

Verfasst: Sonntag 8. November 2009, 11:04
von sma
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

Verfasst: Sonntag 8. November 2009, 11:31
von Fantacoca
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

Verfasst: Sonntag 8. November 2009, 11:36
von pillmuncher
@Fantacoca: "with" funktioniert auch in 2.6.

Verfasst: Sonntag 8. November 2009, 11:37
von Dav1d
with funktioniert auch unter python 2.6

den Rest, deines Satzes, versteh ich nicht

//Edit: Pillmuncher was schneller

Verfasst: Sonntag 8. November 2009, 12:03
von HWK

Code: Alles auswählen

if name == '':
    ...
elif name != '':
    ...
:?:
Da hätte doch ein einfaches else gereicht.
MfG
HWK

Verfasst: Sonntag 8. November 2009, 12:19
von nemomuk
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?")