Programm laden-->Werte benutzen

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
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

Montag 6. Februar 2006, 11:23

folgender Programmcode:

Code: Alles auswählen

import msvcrt
from math import*
import math


class Zeichnung:
    def __init__(self):
        self.m_figurListe = list()
        self.m_flaechenListe = []
        self.m_SchnittListe = []
        
        
    def hinzufuegen_figur(self,figur):
        self.m_figurListe.append( figur )
        
        self.m_SchnittListe.append(figur.rechneSchnittlaenge())
        self.m_flaechenListe.append(figur.rechneFlaeche())
          
    def rechneFlaeche(self):
        self.flaeche = sum(self.m_flaechenListe) 
        
    def rechneSchnittlaenge(self):
        self.schnitt = sum(self.m_SchnittListe) 
       
    def laden(self):
        f = file("Daten.txt", "r")
        self.m_figurListe = f.read()
        print self.m_figurListe
        f.close()

    def speichern(self):
        f=file("Daten.txt","w")
        f.write("%s\n" % self.m_figurListe)
        f.write("%s\n" % self.m_flaechenListe)
        f.write("%s\n" % self.m_SchnittListe)
        f.write("Gesamtflaeche (cm): ")
        f.write("%.2f\n" % self.flaeche)
        f.write("Gesamtschnittlaenge (cm):")
        f.write("%.2f\n" % self.schnitt) 
        f.close()
    
    def loeschen(self):
        self.m_figurListe=[]
           
    
class Kreis:

    def __init__( self, t_xCenter, t_yCenter, t_radius ):
        self.m_xCenter = t_xCenter
        self.m_yCenter = t_yCenter
        self.m_radius = t_radius

    def __repr__(self):
        return "%s, %s, %s" % (self.m_xCenter, self.m_yCenter, self.m_radius)           
        
    def rechneSchnittlaenge(self):
        schnittlaenge = (float(math.pi)) * float(self.m_radius) * 2
        return schnittlaenge
    
    def rechneFlaeche(self):
        flaeche = (float(math.pi)) * float(self.m_radius) * float(self.m_radius)
        return flaeche
        

class Rechteck:
    
    def __init__(self,seitenlaenge_alpha,seitenlaenge_beta):
        self.seitenlaenge_a = seitenlaenge_alpha
        self.seitenlaenge_b = seitenlaenge_beta
        
    def __repr__(self):
        return "%s, %s" % (self.seitenlaenge_a, self.seitenlaenge_b)
    
    def rechneSchnittlaenge(self):
        schnittlaenge=float(self.seitenlaenge_a)*2+float(self.seitenlaenge_b)*2
        return schnittlaenge
    
    def rechneFlaeche(self):
        flaeche=float(self.seitenlaenge_a)*float(self.seitenlaenge_b)
        return flaeche

class Eck:
    
    def __init__(self,seitenlaenge_eck):
        self.eckle = seitenlaenge_eck

    def __repr__(self):
        return "%s" % (self.eckle)
    
    def rechneSchnittlaenge(self):
        schnittlaenge=float(self.eckle)*5
        return schnittlaenge
    
    def rechneFlaeche(self):
        tan=1.37638
        flaeche=((1.25*float(self.eckle))*float(self.eckle))*float(tan)
        return flaeche


def menue():
    print "_________________________________\n"
    print "         Zeichnungstool          "
    print "_________________________________\n"

    print "0   --> Neue Zeichnung"
    print "1   --> Neue Figur anlegen"
    print "2   --> Schnittlaenge berechnen"
    print "3   --> Flaeche berechnen"
    print "4   --> Zeichnung laden"
    print "5   --> Zeichnung speichern"
    print "ESC --> Programm beenden"

   

esc = '\x1b'
menue()
z1=Zeichnung()

ch = msvcrt.getch()
while ch != esc:

        if (ch=='0'):
            print "------------------------------"
            print "--  Neue Zeichnung anlegen  --"
            print "------------------------------"
            print "Wollen Sie alle Zeichnungen loeschen?"
            frage=raw_input("y/n: ")
            if (frage=='n'):
                print "Zeichnung(en) wird(werden) nicht geloescht"
                print "Zurueck zum Hauptmenu"
                menue()
            else:
                print "Zeichnung(en) wird(werden)geloescht"
                z1.loeschen()
           
                menue()
                
        elif (ch=='1'):
            print "------------------------------"
            print "--  Neue Figur(en) anlegen  --"
            print "------------------------------"
            
            print "1  -->  Kreis"
            print "2  -->  Rechteck"
            print "3  -->  5eck"
            eingabe=raw_input()
            if(eingabe=='1'):
                x_center=raw_input("X-Position: ")
                y_center=raw_input("Y-Position: ")
                radius=raw_input("Radius (cm): ")
                kreis=Kreis(x_center,y_center,radius)
                
                z1.hinzufuegen_figur(kreis)
                
            elif(eingabe=='2'): 
                seitenlaenge_alpha=raw_input("Seitenlaenge a (cm): ")
                seitenlaenge_beta=raw_input("Seitenlaenge b (cm): ")
                recht=Rechteck(seitenlaenge_alpha,seitenlaenge_beta)
                
                z1.hinzufuegen_figur(recht)
                                 
            elif(eingabe=='3'):
                seitenlaenge_eck=raw_input("Seitenlaenge(cm): ")
                eck=Eck(seitenlaenge_eck)
                
                z1.hinzufuegen_figur(eck)
        
            menue()
        elif (ch=='2'):
            print "--------------------------------"
            print "---Schnittlaenge aller Figuren--"
            print "--------------------------------"
            z1.rechneSchnittlaenge()
            menue()
        elif (ch=='3'):
            print "--------------------------------"
            print "-------Flaechenberechnung-------"
            print "--------------------------------"
            z1.rechneFlaeche()
            menue()
        elif (ch=='4'):
             print "Programm wurde geladen"
             z1.laden()
             menue()
        elif (ch=='5'):
            z1.speichern()
            print "Programm gespeichert"
            menue()

        ch = msvcrt.getch()
wenn ich das Programm lade, will ich die eingegeben Werte wieder benutzen, d.h. die Funktionen sollen die Werte kennen!
wie kann ich das realisieren?
vielen dank im vorraus!
Zuletzt geändert von Alpha-Phonix am Montag 13. Februar 2006, 15:30, insgesamt 2-mal geändert.
Never touch a running system...
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 6. Februar 2006, 11:36

Das kannst du mit object serialization machen: http://www.python.org/doc/current/lib/m ... ickle.html

Oder mach eine INI Datei mit: http://www.python.org/doc/current/lib/m ... arser.html

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Alpha-Phonix
User
Beiträge: 36
Registriert: Dienstag 10. Januar 2006, 13:24
Kontaktdaten:

Montag 13. Februar 2006, 15:31

hab mein code oben aktualisiert...
ich kriegs einfach net hin, könnt ihr mir auf mein beispiel genau anweisungen geben, wie ich des mim laden machen kann??
das prog muss jetzt dann funzen und ich kriegs halt net gebacken!
vielen dank!
Never touch a running system...
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Montag 13. Februar 2006, 16:22

Hier ein kleins Beispiel für ConfigObj
Hier der Link:
http://www.voidspace.org.uk/cgi-bin/voi ... nfigobj.py

Code: Alles auswählen

self.config = ConfigObj("DEINE_INI_FILE")
#Setzen der Werte
if not self.config.has_key ('Window'):
  self.config['Window'] = {}
  self.config['Window']['posx']  = 100
  self.config['Window']['posy']  = 100
  self.config['Window']['sizex'] = 350
  self.config['Window']['sizey'] = 550
  self.config['Extensions'] = {}
  self.config['Extensions']['excel']    = 'xls'
  self.config['Extensions']['cvs']      = 'cvs'
Nur ein kleines Beispiel. Du kannst soviele Dictionaries erzeugen wie du magst. Diese werden dann in der INI so aussehen:

Code: Alles auswählen

[Window]
  posx = 100
  posy = 100
  sizex = 427
  sizey = 604
[Extensions]
  excel = xls
  cvs = cvs
Die Methode die den oben gezeigten Code ausführt sollte beim Start des Programms und beim Beenden aufgerufen werden. Dann hast du immer aktuelle Daten. Einsetzen kannst du einfach mit:

Code: Alles auswählen

self.config['Window']['posx']
Hoffe ich hab jetzt nichts wichtiges vergessen. Habs mir aus dem Code zusammengesucht.
gruss
Antworten