Seite 1 von 2

Verfasst: Dienstag 22. August 2006, 15:23
von Malle
Ich benutze Idle.

Verfasst: Mittwoch 23. August 2006, 23:14
von Malle
Immer noch ein Problem:

Code: Alles auswählen

import cPickle as p

bladatei = 'bla.data'
dic = {}
dic["text"] = int(raw_input('Zahl eigeben'))

bla = 0
a = file(bladatei, 'w')
p.dump(bla, a)
a.close()

a = file(bladatei)
bla3 = p.load(a)
aaa = dic["text"] + bla3
bla = aaa
a = file(bladatei, 'w')
p.dump(bla, a)
print aaa
a.close()
So vorerst einmal das ist wieder nur ein Test teil eines größeren Programms. Es sollte eigendlich eine Zahl abspeichern und dann später durch eine Erneute eingabe die beiden Zahlen addieren (zuersteigegebene + zweiteingabe) und das Ergebniss Abspeichern. Das Ergebniss wird dabei zur ersteingabe.
Ich wäre echt dankbar für nen nützlichen code oder einen sehr hilfreichen Tipp. mfg.

Verfasst: Mittwoch 23. August 2006, 23:29
von BlackJack
Okay, die Teddybär Methode. Schnapp Dir ein Kuscheltier, setz' es neben dem Monitor und erkläre ihm den Quelltext Zeile für Zeile. Das da oben ist ganz einfacher, linear abgearbeiteter Quelltext. Wenn das nicht hilft, dann weiss ich auch nicht weiter.

Verfasst: Donnerstag 24. August 2006, 06:58
von jens
Malle hat geschrieben:Ich benutze Idle.
Schau mal hier: [wiki]IDLE[/wiki] :)

Verfasst: Donnerstag 24. August 2006, 15:21
von Malle
@ jens danke für den link
@ BlackJack Nein hilft trotz euserst merkwürdiger Metapher nicht, is aber auch egal.
@ Gerold danke für deinen Code der hat letztendlich doch all meine Probleme gelöst. Auch wenn noch gewisse Teile des Programms fehlen (z.B. ein menu oder eine löschfunktion), und es für manche Pros noch ziemlich unprofessionell aussieht. Poste ich erstmal das Skript.

Code: Alles auswählen

# Ersparnissrechner 0.4, python
# made by Malle
# -*- coding: iso-8859-1 -*-

import types
print "*" * 70
print "Ersparnissrechner, zum Beenden Strg+C druecken oder exit Eingeben"
print "*" * 70
TAGE = "tage.txt"
ZIG = "zig.txt"


def read_number(filename):
    try:
        t = file(filename, "r")
    except IOError:
        return 0
    try:
        try:
            numtag = int(t.readline())
        except ValueError:
            numtag = 0
    finally:
        t.close()

    return numtag

def read_number2(zigaretten):
    try:
        z = file(zigaretten, "r")
    except IOError:
        return 0
    try:
        try:
            numzig = int(z.readline())
        except ValueError:
            numzig = 0
    finally:
        z.close()
    return numzig
    
def write_number(filename, numtag):
    assert(isinstance(numtag, (types.IntType, types.LongType)))
    t = file(filename, "w")
    try:
        t.write(str(numtag))
    finally:
        t.close()

def write_number2(zigaretten, numzig):
    assert(isinstance(numzig, (types.IntType, types.LongType)))
    z = file(zigaretten, "w")
    try:
        z.write(str(numzig))
    finally:
        z.close()

def show_number(numtag):
    print "Aktueller Tag: %i" % numtag

def show_number2(numzig):
    print "Anzahl Zigaretten: %i" % numzig
    
def ask_for_number():
    print
    print "Vor wieviel Tagen haben Sie zuletzt geraucht?"
    try:
        s = raw_input("Eingabe: ")
    except KeyboardInterrupt:
        print
        print "Es wurde STRG+C gedrückt!"
        print
        return None
    if s.lower() == "exit":
        return None
    else:
        try:
            numtag = int(s)
            return numtag
        except ValueError:
            print
            print "Bitte geben sie eine ganze Zahl ein."

def ask_for_number2():
    print
    print "Wieviele haben sie seither geraucht"
    try:
        s = raw_input("Eingabe: ")
    except KeyboardInterrupt:
        print
        print "Es wurde Strg+C gedrückt!"
        print
        return None
    if s.lower() == "exit":
        return None
    else:
        try:
            numzig = int(s)
            return numzig
        except ValueError:
            print
            print "Bitte geben sie eine Ganze Zahl ein."
    
def berechnung_frueher():
    old_number = read_number(TAGE)
    show_number(old_number)
    new_number = ask_for_number()
    
    new_number = old_number + new_number
    write_number(TAGE, new_number)
    global frueher
    frueher = new_number * 4 / 3
    

def berechnung_jetzt():
    old_number2 = read_number2(ZIG)
    show_number2(old_number2)
    new_number2 = ask_for_number2()
    
    new_number2 = old_number2 + new_number2
    write_number2(ZIG, new_number2)
    global jetzt
    jetzt = new_number2 * 0.2

def main():
    while True:
        berechnung_frueher()
        berechnung_jetzt()
        geldfrueher = frueher
        geldjetzt = jetzt
        Ersparniss = geldfrueher - geldjetzt
        print
        print "Sie haben bereits", Ersparniss, "Euro gespart."
        print
        

if __name__ == "__main__":
    main()
    
        

Verfasst: Donnerstag 24. August 2006, 15:24
von jens
Da gibt es allerdings noch reichlich optimierungsbedarf... Viele Codeteile sind fast identisch... Also kann man das zusammenfassen...

Verfasst: Donnerstag 24. August 2006, 15:41
von Malle
Ich weis das da noch einiges drann verbessert werden kann bzw. muss aber ich war erst einmal froh das alles mit der berechnung funktioniert hat.
An Die feinarbeit mach ich mich heute nacht mal rann.