Code: Alles auswählen
kreise = [Kreis()]*5
Wollte dich nur warnen, falls du dieses Feature von Python entdeckst.
Code: Alles auswählen
kreise = [Kreis()]*5
Benutze ich auf Windows ebenfalls und hab keine Probleme damit. Was ist Dir denn da unverständlich? Vielleicht kann ich ja helfen?Alpha-Phonix hat geschrieben:noch was zum programmieren allgemein, ich suche schon länger eine gute ide, hab grad pythonwin drauf, und finde, dass der debugger etc schwer verständlich ist!
Code: Alles auswählen
z1=Zeichnung()
radius=raw_input("Radius (cm): ")
kreis=Kreis(radius) # soll nicht nur einer sonder viele werden
z1.hinzufuegen_kreis(kreis)
schnittlaenge_kreis=kreis.rechneSchnittlaengeKreis(radius)
flaeche_kreis=kreis.rechneFlaecheKreis(radius)
Code: Alles auswählen
import msvcrt
from math import*
class GeometrischeFigur:
def __init__(self):
self.GeometrischeFigur=[]
def rechneSchnittlaengeGesamt(self,schnittlaenge_kreis,schnittlaenge_rechteck,schnittlaenge_eck):
seitenlaenge_gesamt=schnittlaenge_kreis+schnittlaenge_rechteck+schnittlaenge_eck
return seitenlaenge_gesamt
class Zeichnung:
def hinzufuegen_kreis(self,kreis_1):
self.kreisobjekt=kreis_1
def hinzufuegen_rechteck(self,recht_1):
self.rechteckobjekt=recht_1
def hinzufuegen_eck(self,eck_1):
self.ecksobjekt=eck_1
def speichern(self):
f=file("Daten.txt","w")
f.write("Kreis:\n")
f.write("--------\n")
f.write("Kreisradius (cm): ")
f.write("%s\n" % radius)
f.write("Kreisumfang (cm): ")
f.write("%s\n" % schnittlaenge_kreis)
f.write("Kreisflaeche (cm2): ")
f.write("%s\n" % flaeche_kreis)
f.write("---------------------------------\n")
f.write("Rechteck:\n")
f.write("-------------\n")
f.write("Seitenlaenge a (cm): ")
f.write("%s\n" % seitenlaenge_alpha)
f.write("Seitenlaenge b (cm): ")
f.write("%s\n" % seitenlaenge_beta)
f.write("Rechteckumfang (cm): ")
f.write("%s\n" % schnittlaenge_rechteck)
f.write("Rechteckflaeche cm2")
f.write("%s\n" % flaeche_rechteck)
f.write("---------------------------------\n")
f.write("5-eck:\n")
f.write("--------\n")
f.write("Seitenlaenge (cm): ")
f.write("%s\n" % seitenlaenge_eck)
f.write("Eckumfang (cm): ")
f.write("%s\n" % schnittlaenge_eck)
f.write("Eckflaeche (cm): ")
f.write("%s\n" % flaeche_eck)
f.write("---------------------------------\n")
f.write("Schnittlaenge aller Figuren (cm): ")
f.write("%s\n" % gesamt)
f.close()
def laden(self):
f = file("Daten.txt", "r")
inhalt = f.read()
print inhalt
f.close()
class Kreis(GeometrischeFigur):
def __init__(self,radius):
self.Kreis=[radius]
def rechneSchnittlaengeKreis(self,radius):
flaeche=0
schnittlaenge_kreis=0
pie=3.14
schnittlaenge_kreis=(float(pie))*float(radius)*2
return schnittlaenge_kreis
def rechneFlaecheKreis(self,radius):
flaeche=0
pie=3.14
flaeche=((float(pie))*float(radius)*2)*float(radius)
return flaeche
class Rechteck(GeometrischeFigur):
def __init__(self,seitenlaenge_alpha,seitenlaenge_beta):
self.Rechteck=[seitenlaenge_alpha,seitenlaenge_beta]
def rechneSchnittlaengeRechteck(self,seitenlaenge_alpha,seitenlaenge_beta):
schnittlaenge_rechteck=0
schnittlaenge_rechteck=float(seitenlaenge_alpha)*2+float(seitenlaenge_beta)*2
return schnittlaenge_rechteck
def rechneFlaecheRechteck(self,seitenlaenge_alpha,seitenlaenge_beta):
flaeche=0
flaeche=float(seitenlaenge_alpha)*float(seitenlaenge_beta)
return flaeche
class Eck(GeometrischeFigur):
def __init__(self,seitenlaenge_eck):
self.Eck=[seitenlaenge_eck]
def rechneSchnittlaengeEck(self,seitenlaenge_eck):
schnittlaenge_eck=0
schnittlaenge_eck=float(seitenlaenge_eck)*5
return schnittlaenge_eck
def rechneFlaecheEck(self,seitenlaenge_eck):
tan=1.37638
flaeche_eck=0
flaeche_eck=((1.25*float(seitenlaenge_eck))*float(seitenlaenge_eck))*float(tan)
return flaeche_eck
def ausgabe():
print "________________________________"
print "Kreis:"
print "------"
print "Radius: ",radius,"cm"
print "Schnittlaenge: ",schnittlaenge_kreis,"cm"
print "Flaeche: ",flaeche_kreis,"cm2"
print "________________________________"
print "Rechteck:"
print "---------"
print "Seitenlaenge a: ",seitenlaenge_alpha,"cm"
print "Seitenlaenge b: ",seitenlaenge_beta,"cm"
print "Schnittlaenge: ",schnittlaenge_rechteck,"cm"
print "Flaeche: ",flaeche_rechteck,"cm2"
print "________________________________"
print "5-Eck:"
print "------"
print "Seitenlaenge: ",seitenlaenge_eck,"cm"
print "Schnittlaenge: ",schnittlaenge_eck,"cm"
print "Flaeche: ",flaeche_eck,"cm2"
print "________________________________\n\n"
print "Schnittlaenge aller Figuren: ",gesamt,"cm"
def menue():
print "_________________________________\n"
print " Zeichnungstool "
print "_________________________________\n"
print "0 --> Neue Zeichnung"
print "1 --> Neue Figur anlegen"
print "2 --> Schnittlaenge berechnen"
print "3 --> Umfang berechnen"
print "4 --> Flaeche berechnen"
print "5 --> Zeichnung laden"
print "6 --> Zeichnung speichern"
print "ESC --> Programm beenden"
def loeschen(kreis1,recht1,eck1):
pass
radius=0
schnittlaenge_kreis=0
flaeche_kreis=0
schnittlaenge_rechteck=0
seitenlaenge_alpha=0
seitenlaenge_beta=0
flaeche_rechteck=0
schnittlaenge_eck=0
seitenlaenge_eck=0
flaeche_eck=0
gesamt=0
seitenlaenge_gesamt=0
esc = '\x1b'
menue()
geo=GeometrischeFigur()
test=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"
radius=0
schnittlaenge_kreis=0
flaeche_kreis=0
schnittlaenge_rechteck=0
seitenlaenge_alpha=0
seitenlaenge_beta=0
flaeche_rechteck=0
schnittlaenge_eck=0
seitenlaenge_eck=0
gesamt=0
flaeche_eck=0
seitenlaenge_gesamt=0
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'):
z1=Zeichnung()
radius=raw_input("Radius (cm): ")
kreis=Kreis(radius)
z1.hinzufuegen_kreis(kreis)
schnittlaenge_kreis=kreis.rechneSchnittlaengeKreis(radius)
flaeche_kreis=kreis.rechneFlaecheKreis(radius)
gesamt=geo.rechneSchnittlaengeGesamt(schnittlaenge_kreis,schnittlaenge_rechteck,schnittlaenge_eck)
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_rechteck(recht)
schnittlaenge_rechteck=recht.rechneSchnittlaengeRechteck(seitenlaenge_alpha,seitenlaenge_beta)
flaeche_rechteck=recht.rechneFlaecheRechteck(seitenlaenge_alpha,seitenlaenge_beta)
gesamt=geo.rechneSchnittlaengeGesamt(schnittlaenge_kreis,schnittlaenge_rechteck,schnittlaenge_eck)
elif(eingabe=='3'):
seitenlaenge_eck=raw_input("Seitenlaenge(cm): ")
eck=Eck(seitenlaenge_eck)
z1.hinzufuegen_eck(eck)
schnittlaenge_eck=eck.rechneSchnittlaengeEck(seitenlaenge_eck)
flaeche_eck=eck.rechneFlaecheEck(seitenlaenge_eck)
gesamt=geo.rechneSchnittlaengeGesamt(schnittlaenge_kreis,schnittlaenge_rechteck,schnittlaenge_eck)
menue()
elif (ch=='2'):
geo=GeometrischeFigur()
gesamt=geo.rechneSchnittlaengeGesamt(schnittlaenge_kreis,schnittlaenge_rechteck,schnittlaenge_eck)
print "--------------------------------"
print "--Schnittlaenge aller Figuren---"
print "--------------------------------"
print gesamt,"cm"
menue()
elif (ch=='3'):
print "--------------------------------"
print "--------Umfangberechnung--------"
print "--------------------------------"
print "Schnittlaenge Kreis : ",schnittlaenge_kreis,"cm"
print "Schnittlaenge Rechteck: ",schnittlaenge_rechteck,"cm"
print "Schnittlaenge 5-Eck : ",schnittlaenge_eck,"cm"
elif (ch=='4'):
print "--------------------------------"
print "-------Flaechenberechnung-------"
print "--------------------------------"
print "Flaeche Kreis : ",flaeche_kreis,"cm2"
print "Flaeche Rechteck: ",flaeche_rechteck,"cm2"
print "Flaeche 5-Eck : ",flaeche_eck,"cm2"
menue()
elif (ch=='5'):
lade=Zeichnung()
print "Programm wurde geladen"
lade.laden()
menue()
elif (ch=='6'):
ausgabe()
speicher=Zeichnung()
speicher.speichern()
print "Programm gespeichert"
menue()
ch = msvcrt.getch()
Na indem Du halt eine Liste anlegst in die Du die Kreise und Rechtecke speicherst.Alpha-Phonix hat geschrieben:so sieht mein kompletter code aus, wie ihr sehen könnt, wird nur EIN kreis, ein rechteck und ein 5-eck angelegt. das soll jetzt mit listen realisiert werden, aber wie?
Wird `self.GeometrischeFigur` irgendwann einmal benutzt? Die Klasse sieht mir aus wie eine abstrakte Basisklasse. Benötigt man in Python eigentlich nicht, wenn sie komplett abstract ist.Code: Alles auswählen
class GeometrischeFigur: def __init__(self): self.GeometrischeFigur=[]
Der Klasse `Zeichnung` fehlt eine `__init__()`-Methode in der eine Liste angelegt wird und anstelle der drei `hinzufuegen_*()` Methoden kannst Du dann eine nehmen, die irgendein (geometrisches) Objekt an diese Liste anhängt.Code: Alles auswählen
class Zeichnung: def hinzufuegen_kreis(self,kreis_1): self.kreisobjekt=kreis_1 def hinzufuegen_rechteck(self,recht_1): self.rechteckobjekt=recht_1 def hinzufuegen_eck(self,eck_1): self.ecksobjekt=eck_1
Wie eine konkrete Figur gespeichert wird, solltest Du lieber den Figur-Objekten überlassen. Sonst muss die `Zeichnung` über jedes konkrete Objekt bescheid wissen. Das ist nicht besonders einfach erweiterbar.Code: Alles auswählen
def speichern(self): f=file("Daten.txt","w") f.write("Kreis:\n") f.write("--------\n") f.write("Kreisradius (cm): ") f.write("%s\n" % radius) f.write("Kreisumfang (cm): ") f.write("%s\n" % schnittlaenge_kreis) f.write("Kreisflaeche (cm2): ") f.write("%s\n" % flaeche_kreis) f.write("---------------------------------\n") f.write("Rechteck:\n") f.write("-------------\n") f.write("Seitenlaenge a (cm): ") f.write("%s\n" % seitenlaenge_alpha) f.write("Seitenlaenge b (cm): ") f.write("%s\n" % seitenlaenge_beta) f.write("Rechteckumfang (cm): ") f.write("%s\n" % schnittlaenge_rechteck) f.write("Rechteckflaeche cm2") f.write("%s\n" % flaeche_rechteck) f.write("---------------------------------\n") f.write("5-eck:\n") f.write("--------\n") f.write("Seitenlaenge (cm): ") f.write("%s\n" % seitenlaenge_eck) f.write("Eckumfang (cm): ") f.write("%s\n" % schnittlaenge_eck) f.write("Eckflaeche (cm): ") f.write("%s\n" % flaeche_eck) f.write("---------------------------------\n") f.write("Schnittlaenge aller Figuren (cm): ") f.write("%s\n" % gesamt) f.close()
Warum ist der Radius in einer Liste gespeichert?Code: Alles auswählen
class Kreis(GeometrischeFigur): def __init__(self,radius): self.Kreis=[radius]
Code: Alles auswählen
def rechneSchnittlaengeKreis(self,radius): flaeche=0 schnittlaenge_kreis=0 pie=3.14 schnittlaenge_kreis=(float(pie))*float(radius)*2 return schnittlaenge_kreis
Code: Alles auswählen
def schnittlaenge(self):
return math.pi * self.radius * 2