"Zurück zum Hauptmenü" wie realisierbar?

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.
Robokopp
User
Beiträge: 64
Registriert: Mittwoch 3. November 2010, 12:04

Hallo

ich habe ein Programm geschrieben, was folgendermaßen gegliedert ist:

Hauptmenü:
1.
2.
3.
4.
5.
6.
7.
8.
usw


if m == 1:
Submenü 1:
1.
2.
3.
if s==1:
Funktion 1:
if s==2:
Funktion 2:
if s==3:
Funktion 3:

if m == 2:
Submenü2:
1.
2.
3.

usw.


Nun möchte ich gerne in jedes Submenü den Menüpunkt Exit bzw back einbauen, der den Benutzer bei Eingabe der Nummer zurück zum Hauptmenü leitet.
Außerdem sollte nach Ablauf der ausgewählten Funktion die Option "back" erscheinen, die den Anwender zum Submenü zurück leitet.

Wie kann ich das umsetzen?

Hatte mir schon was bezüglich der "Zurück zum Hauptmenü" Funktion überlegt, wobei meine Versuche scheiterten und mir auch sonst keine Möglichkeit in den Sinn kommt:
Gesamtes Programm als Klasse definieren und in jedes Submenü eine Option einbauen, die die Klasse auf Befehl aufruft(müsste ja dann das Programm quasi neustarten)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

In welchem Kontext eigentlich? Sprichst Du von einer reinen Konsolenanwendung?

So ganz ohne Quellcode / Sinn der Anwendung ist es schwer, da etwas handfestes als Tipp zu nennen.

Wenn Du tatsächlich dermaßen intensiv mit solchen Menüs arbeitest, würde ich mir dafür eine brauchbare Datenstruktur überlegen und dazu eine Funktion, die den Menüablauf steuert und den aktuellen Zustand kennt. Damit kann man dann auch gut ein "vor" und "zurück" implementieren.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Robokopp
User
Beiträge: 64
Registriert: Mittwoch 3. November 2010, 12:04

Hier der Quellcode:

Code: Alles auswählen

print"___________________"
print"Mathematische Hilfe"
print"___________________\n"
print"Auswahlmenue: \n"
print"1.Graph"
print"2.Kreis"
print"3.Kugel"
print"4.Pyramide"
print"5.Zylinder"
print"6.Dreieck"
print"7.Rechteck"
print"8.Ableitung von..."
print"9.Physikalische Rechenmethoden"
print"10.About...."
print"\n"
m = input("Option waehlen\n")

if m == 1: #Hauptmenueeintrag 1 (Graph)
  print"----------------------"
  print "Option Graph gewaehlt"
  print"---------------------- \n"
  print"1.Nullstellenberechnung"
  print"2.Extrempunkte"
  print"3.Grenzwerte"
  print"4.Wertetabelle"

  print" \n"
  g = input("Option waehlen: \n ")
  if g == 1: #Submenueeintrag 1
    print "Dieses Tool errechnet Ihnen die Nullstellen der quadratischen Gleichung:"
    print "ax*x+bx+c \n"
    a=input("Geben sie bitte a ein: \n")
    b=input("Geben sie bitte b ein: \n")
    c=input("Geben sie bitte c ein: \n")
    d=b*b-4*a*c
    if d < 0:
      print "Negativer Wert unter der Wurzel!!Bitte korrigieren"
    else:
      x=((-b)+(b*b-4*a*c)**0.5)/(2*a)
      print x
      y=((-b)-(b*b-4*a*c)**0.5)/(2*a)
      print y
  if g == 3: #Submenueeintrag 2////////////////////////
    print "Extrempunkte"

  if g == 4: #Submenueeintrag 3 //////////////////////
    print"Wertetabelle\n"
    x=[-6,-5,-4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    a=input("Geben sie a an\n")
    b=input("Geben sie b an\n")
    c=input("Geben sie c an\n")

    print a,"*x**2+",b,"*x+",c, "\n"
    print "Wertetabelle\n"
    l=a*25+b*(-5)+c
    s=a*16+b*(-4)+c
    d=a*9+b*(-3)+c
    f=a*4+b*(-2)+c
    g=a-b+c
    h=c
    q=a*1+b*1+c
    w=a*4+b*2+c
    e=a*9+b*3+c
    r=a*16+b*4+c
    t=a*25+b*5+c

    print "Negativer Bereich: \n"
    print "x=-5","y=",l
    print "x=-4","y=",s
    print "x=-3","y=",d
    print "x=-2","y=",f
    print "x=-1","y",g
    print"\n"
    print "x=0","y=",h
    print"\n"
    print"Positiver Bereich: \n"
    print "x=1","y=",q
    print "x=2","y=",w
    print "x=3","y=",e
    print "x=4","y=",r
    print "x=5","y=",t

if m == 2: #Hauptmenueeintrag 2 (Kreis)

  print"Kategorie Kreis gewaehlt\n"

  print"1.Kreisflaechenberechnung"
  print"2.Kreisumfangberechnung"
  print"3.Bestimmung von r anhand des Umfangs"
  print"4.Bestimmung von r anhand der Flaeche"
  print" \n"
  g = input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n ")


  if g == 1: #Submenueeintrag 1
    print "Kreisflaechenberechnung \n"
    r=input("Geben sie den Kreisradius an: \n")
    if r > 0:
      f = r*r*3.1415926535897932
      print "Die Flaeche des Kreises betraegt: \n"
      print f

  if g == 2:
    print "Kreisumfangberechnung \n"
    r=input("Geben sie den Radius r an\n")

    if r>0:
      u=2*r*3.1415926535897932
      print u
    else:
      print"Der Radius muss positiv sein"

  if g == 3:
    print"Bestimmung von r anhand des Umfangs \n"
    u=input("Geben sie den Umfang u an \n")
    r=u/(2*3.1415926535897932)
    print u

  if g == 4:
    print"Bestimmung von r anhand der Flaeche \n"
    f=input("Geben sie die Flaeche F an \n")
    r=(f/3.1415926535897932)**0.5
    print r


if m == 3: #Hauptmenueeintrag 3 (Kugel)
  print"------------------------"
  print"Kategorie Kugel gewaehlt"
  print"------------------------ \n"

  print"1.Berechnung der Oberflaeche"
  print"2.Berechnung des Volumens"

  g = input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n")

  if g == 1:
    print"Berechnung der Oberflaeche: \n"
    r=input("Geben sie den Radius r der Kugel an\n")
    if r>0:
      v=4*3.1415926535897932*r*r
      print v
    else:
      print"Der Wert muss positiv sein"

  if g == 2:
    print"Berechnung des Volumens\n"
    r=input("Geben sie den Radius r der Kugel an\n")
    if r>0:
      v=4/3*r*r*r*3.1415926535897932
      print v
    else:
      print"Der Wert muss positiv sein\n"

if m == 4: #Hauptmenueeintrag 4 (Pyramide)
  print"---------------------------"
  print"Kategorie Pyramide gewaehlt"
  print"---------------------------\n"
  print"1.Berechnung des Volumens"
  print"2.Berechnung der Oberflaeche \n"
  g = input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n ")

  if g == 1:
    print"Volumenberechnung \n"

  if g == 2:
    print"Oberflaechenberechnung \n"

if m == 5: #Hauptmenueeintrag 5 (Zylinder)
  print"---------------------------"
  print"Kategorie Zylinder gewaehlt \n"
  print"---------------------------\n"
  print"1.Zylinderoberflaeche berechnen"
  print"2.Zylindervolumen berechnen"

  g=input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n")
  if g == 1:
    print"Oberflaeche Zylinder\n"
    r=input("Geben sie den Radius r ein \n")
    h=input("Geben sie die Hoehe h ein \n")

    if h>0 and r>0:
      o=2*r*r*3.1415926535897932 + 2*r*3.1415926535897932*h
      print o
  if g == 2:
    print"Volumen Zylinder\n"
    r=input("Geben sie den Radius r ein \n")
    h=input("Geben sie die Hoehe h ein \n")
    if r>0 and h>0:
      v=r*r*3.1415926535897932*h
      print v
if m == 6: #Hauptmenueeintrag 6 (Dreieck)
  print"--------------------------"
  print"Kategorie Dreieck gewaehlt"
  print"--------------------------"
  print"1.Berechnung der Flaeche"
  print"2.Berechnung des Umfangs"
  print" \n"
  g=input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n")
  if g == 1:
    print"Flaechenberechnung\n"
    a=input("Geben sie die Hypotenuse a an\n")
    b=input("Geben sie die Hoehe h an\n")
    if a>0 and b>0:
      f=0.5*a*b
      print "Flaeche:" ,f
    else:
      print"Die Werte muessen positiv sein"
  if g == 2:
    print"Umfangberechnung"
    a=input("Geben sie die Laenge der Seite a an\n")
    b=input("Geben sie die Laenge der Seite b an\n")
    c=input("Geben sie die Laenge der Seite c an\n")
    f=a+b+c
    print"Umfang: ",f
if m == 7: #Hauptmenueeintrag 7 (Rechteck)
  print"---------------------------"
  print"Kategorie Rechteck gewaehlt"
  print"---------------------------"
  print"1.Berechnung der Flaeche"
  print"2.Berechnung des Umfangs"
  print"3.Berechnung der Diagonale\n"
  g = input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n")
  if g == 1:
    print"Berechnung der Flaeche \n"
    a=input("Geben sie die Laenge der Seite a an: \n")
    b=input("Geben sie die Laenge der Seite b an: \n")
    if a > 0 and b > 0:
      f = a*b
      print f
    else:
      print"Die Werte der beiden Seiten muessen positiv sein!"

  if g == 2:
    print"Berechnung des Umfangs\n"
    a=input("Geben sie die Laenge der Seite a an: \n")
    b=input("Geben sie die Laenge der Seite b an: \n")
    if a>0 and b>0:
      u=2*(a+b)
      print u
    else:
      print"Die Werte der beiden Seiten muessen positiv sein!"

  if g == 3:
    print"Berechnung der Diagonale\n"
    a=input("Geben sie die Laenge der Seite a an:\n")
    b=input("Geben sie die Laenge der Seite b an:\n")
    if a>0 and b>0:
      d=(a*a+b*b)**0.5
      print d
    else:
      print"Die Werte der beiden Seiten muessen positiv sein"

if m == 8: #Hauptmenueeintrag 8 (Ableitung von...)
  print"----------------"
  print"Ableitung von..."
  print"----------------\n"
  print"Geben sie hier f(x) unter der Beruecksichtigung folgender Schreibweisen an: \n"
  print"1.Exponenten: "
  print"Sie werden anstatt durch Hoeherstellung durch ** realisiert\n"
  print"Bsp: x**1 entspricht x, x**0.5 entspricht Wurzel von x\n"
  print"2.In Python werden Punkte . Statt Kommata , verwendet.\n"
  print"Dies gilt auch fuer Zahlen in dieser Rechenmethode\n \n"
  print"a*x**i+b*x**o+c*x**p \n"
  x="x"
  a=input("Geben sie a an \n")
  i=input("Geben sie i an \n")
  b=input("Geben sie b an \n")
  o=input("Geben sie o an \n")
  c=input("Geben sie c an \n")
  p=input("Geben sie p an \n")


if m == 9: #Hauptmenueeintrag 9 (Physikalische Rechenmethoden)
  print"_______________________________________________"
  print"Kategorie Physikalische Rechenmethoden gewaehlt"
  print"_______________________________________________\n"
  print"1.Geschwindigkeit aus Strecke und zeit"
  print"2.Schwingungen"
  print"3.Gravitation\n1"

  g=input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n")


  if g == 3:
    print"Option Gravitation ausgewaehlt\n"
    print"1.Keplersches Gesetz"
    print"2."
    print"3."

    h=input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n")

    if h == 1:
      print"Option Keplersches Gesetz gewaehlt\n"
      print"1.Umlaufdauer T1 berechnen"
      print"2.Bahnradius a berechnen\n"
      print"3.Tabelle der Umlaufzeiten"
      print"4.Tabelle der Bahnradien\n"

      z=input("Bitte waehlen sie einen Eintrag aus dem Menue anhand der zugeordneten Nummer: \n")

      if z == 1:
        print"Option T1 berechnen ausgewaehlt\n"

        a=input("Geben sie den mittleren Bahnradius a1 an\n")
        b=input("Geben sie den mittleren Bahnradius a2 an\n")
        c=input("Geben sie die Umlaufdauer T2 an\n")

        t=(((c**2)*(a**3))/(b**3))**0.5
        print"\n"
        print" Die Umlaufdauer T1 betraegt: ", t

      if z == 2:
        print"Option Bahnradius a1\n"
        a=input("Geben sie die Umlaufdauer T1 an\n")
        b=input("Geben sie die Umlaufdauer T2 an\n")
        c=input("Geben sie den mittleren Bahnradius a2 an\n")

      if z == 3:

        print"Tabelle der Umlaufzeiten\n"

        print"siderische bzw"
        print"anomalistsche           synodische Umlaufzeit"
        print"Umlaufzeit"

        print "ISS 	1,51   Stunden 	1,53  Stunden"
        print "Geosync     23,93 Stunden 24,00  Stunden"
        print "Mond 	27,322  Tage  	29,53  Tage"
        print "Merkur 	87,969  Tage 	115,88 Tage"
        print "Venus 	224,701 Tage 	583,92 Tage"
        print "Erde 	365,256 Tage 	          "
        print "Mars 	686,980 Tage 	779,94 Tage"
        print "Ceres 	4,600   Jahre 	466,72 Tage"
        print "Jupiter    11,862  Jahre 	398,88 Tage"
        print "Saturn 	29,458  Jahre 	378,09 Tage"
        print "Uranus 	84,014  Jahre 	369,66 Tage"
        print "Neptun 	164,793 Jahre 	367,49 Tage"
        print "Pluto 	248,200 Jahre 	366,73 Tage"
        print "Quaoar 	285,970 Jahre 	366,54 Tage"
        print "Sedna 	10040   Jahre 	365,29 Tage"
        print "SonneS.    230 Mio.Jahre  "


if m == 10: #Hauptmenueeintrag 10 (About)

  print"______________________________________________________________________________\n"
  print"\n"
  print" _____________________________"
  print" $$$$$Mathematische Hilfe$$$$$ \n _____________________________\n\n"
  print" Autor:  \n \n Programmiersprache: Python 3.0\n"
  print" Editor: PyGTKEditor \n"
  print" Entwicklungsplatform: Maemo 5 auf Nokia N900\n"
  print" Emailadresse:  \n"
  print" ICQ:  \n"
  print"______________________________________________________________________________\n"
Habe vor ca 4 Tagen mit Python angefangen, weshalb ich mich eigentlich so gut wie garnicht auskenne.
Das Programm ist ein reines Terminalprog.

Eine andere Strukturierung ist mir bisher leider noch nicht in den Sinn gekommen

Ich habe das Programm so eben zum ersten mal auf dem Pc ausgeführt und musste feststellen, dass sich die Konsole nach der Berechnung xyz einfach schließt.
Gibt es da nicht einen Befehl, der dies verhindert?
Zuletzt geändert von Robokopp am Mittwoch 3. November 2010, 13:06, insgesamt 2-mal geändert.
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Kannst Du Deinen Code bitte in ein Code-Element einpacken? So ist er nur schwer lesbar.
https://www.xing.com/go/invite/18513630.6a91d4
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Robokopp hat geschrieben: Habe vor ca 4 Tagen mit Python angefangen, weshalb ich mich eigentlich so gut wie garnicht auskenne.
Ok, das erklärt einiges :-)

Also prinzipiell musst Du Quellcode hier in spezielle Code-Tags setzen. Für Python insbesondere gibt es einen speziellen Tag:

Code: Alles auswählen

print "Hallo Welt"
Dafür gibts auch die schönen Knöpfe direkt über dem Eingabefeld für ein Posting ;-)

Code: Alles auswählen

[code=python]
print "Hallo welt"
oder

Code: Alles auswählen

print "Hallo welt"
[/code]

Bei so langem Quellcode bietet es sich an, den in das paste-bin auszulagern:
http://python-forum.de/pastebin.php

Link ist oben in der Zeile unter dem großen Logo.

Zum Thema: Du solltest Dein Projekt imho ein wenig überdenken und erst einmal das Tutorial durcharbeiten. (es gibt zum offiziellen aus der Doku auch eine deutsche Übersetzung; mal im Forum suchen oder im wiki: wiki.python-forum.de)

Dein Code ist in vielen Bereichen sehr unstrukturiert, eben weil Dir viele Kontrollstrukturen noch nicht klar sind oder schlicht fehlen. Bei so einem großen Projekt muss man eben Funktionen kennen und anwenden können, sonst wird es extrem unübersichtlich.

Für eine gute Datenstruktur, solltest Du auch Listen und Dictionaries kennen und Dich mit diesen grundlegenden Datenstrukturen vertraut machen.

Alleine der Code für Deine Wertetabelle sieht "schlimm" aus. Was machst Du, wenn jemand 100 Werte berechnet haben möchte? (Das Alphabet hat ja nur 26 Buchstaben :-D ) Das wäre z.B. eine schöne Übung für Schleifen und ggf. Listen!

Es bringt Dir jetzt glaube ich nicht viel, wenn ich dir Code für eine denkbare Menüführung posten würde. Mein Tipp: Versuche mal das Tutorial durchzuackern. Evtl. auch weitere a la "A Byte of Python", "Dive into Python" oder "Learn Python the hard way". Mehr dazu im wiki.

Grundsätzlich solltest Du immer eines im Hinterkopf behalten: Programmierung ist mehr, als die Aneinanderreihung trivialer Berechnungen. Im Moment wiederholst Du Dich ständig, seien es immer gleiche Benutzerabfragen, oder die Auswahl eines Menüpunktes oder die stumpfe Ausgabe. "DRY" (don't repeat yourself) ist eine der schwierigsten Dinge, die es beim Programmieren zu beachten gilt. Schwierig, weil man eben in grundsätzlichen Abläufen denken muss und die Fähigkeit zur Abstraktion ausbilden muss.

Beispiel, damit Du siehst, was ich meine:

Code: Alles auswählen

def calc_square_func(params, start=-10, stop=10, step=1):
    a, b, c = params
    for x in xrange(start, stop, step):
        yield x, a*x**2 + b*x + c
Rufe ich das auf, erhalte ich:

Code: Alles auswählen

In [19]: list(calc_square_func((1, 0, 0)))
Out[19]: 
[(-10, 100),
 (-9, 81),
 (-8, 64),
 (-7, 49),
 (-6, 36),
 (-5, 25),
 (-4, 16),
 (-3, 9),
 (-2, 4),
 (-1, 1),
 (0, 0),
 (1, 1),
 (2, 4),
 (3, 9),
 (4, 16),
 (5, 25),
 (6, 36),
 (7, 49),
 (8, 64),
 (9, 81)]
Viel kürzer als Deines. Zudem universeller, da ich beliebig viele Werte ausrechnen kann.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Robokopp
User
Beiträge: 64
Registriert: Mittwoch 3. November 2010, 12:04

Ich habe mir dieses Videotutorial angesehen:

http://showmedo.com/videotutorials/seri ... ies_german
ist eigentich recht gut :)
Alleine der Code für Deine Wertetabelle sieht "schlimm" aus. Was machst Du, wenn jemand 100 Werte berechnet haben möchte? (Das Alphabet hat ja nur 26 Buchstaben ) Das wäre z.B. eine schöne Übung für Schleifen und ggf. Listen!
:mrgreen:

Hast ja recht
Bei vielen Sachen weiß ich eben nicht wirklich, wie ich es anders machen soll.

Beispielsweise habe ich die von dir gepostete Form noch nie gesehn^^

Ich werd mir wohl besser noch ein paar Tutorials anschauen
Trotzdem Danke
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Robokopp hat geschrieben:Ich werd mir wohl besser noch ein paar Tutorials anschauen
Du möchtest dir nicht viele anschauen, sondern eins richtig durcharbeiten ;-) Für den Anfang sollteen es das offizielle Tutorial oder die Übersetzung davon tun.
Das Leben ist wie ein Tennisball.
Robokopp
User
Beiträge: 64
Registriert: Mittwoch 3. November 2010, 12:04

alles klar
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Robokopp hat geschrieben:Ich habe mir dieses Videotutorial angesehen:

http://showmedo.com/videotutorials/seri ... ies_german
ist eigentich recht gut :)
Hm... ich habe nur mal kurz in das zur OOP reingeschaut und fand es eher nicht so toll. (Alleine das lautmalerische "Pütong" stört schon :mrgreen: )
"Das" Paradigma gibt es in Python einfach nicht; es werden also falsche Aussagen getroffen.

Ob man für eine Einführung in Programmiersprachen wirklich ein Video-Tutorial braucht, weiß ich nicht. Vielleicht ist der Rest ja auch brauchbar.

Dennoch muss man imho viel zusätzlich lesen (Videos gehen ja unheimlich schnell vorüber) und vor allem auch ausprobieren!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Wie wäre es mit sowas in der Art ?

Code: Alles auswählen

#!/usr/bin/env python
import math

class menu(object):

    def __init__(self, label, text="", callback=None):
        self.items = []
        self.label = label
        self.text = text            
        self.func = callback

        self.back = "z"
        self.exit = "e"
    
    def __str__(self):
        i = len(self.items)
        return "{0}\n{1}. zur\xfcck\n{2}. schlie\xdfen\n\n" \
               "".format(self.text, self.back, self.exit)
                
    def add_item(self, item):
        self.items.append(item)
        self.text = self.text + "\n" + str(len(self.items)) + ". " + item.label

    def change_menu(self, index):
        if index == self.back or index == self.exit:
            return index

        item = self.items[int(index)-1]
        return item.m_input()
    
    def m_input(self):
        if self.func is None:
            result = self.change_menu(raw_input(self))
        else:
            if self.func():
                result = self.back
            else:
                result = "check_again"
            
        if result == self.back:
            return "check_again"

        elif result == "check_again":
            self.m_input()
            
        elif result == self.exit:
            return

def null():
    print "ax*x+bx+c \n"
    a = int(raw_input("Geben sie bitte a ein: \n"))
    b = int(raw_input("Geben sie bitte b ein: \n"))
    c = int(raw_input("Geben sie bitte c ein: \n"))
        
    d = b**2 - (4 * a * c)
    if d >= 0:
        x = (-b + math.sqrt(d)) / (2 * a)
        print x
        y = (-b - math.sqrt(d)) /(2 * a)
        print y
        return True
    
    print "Negativer Wert unter der Wurzel!!! Bitte korrigieren"
    return False
    
if __name__ == "__main__":

    main_text =\
"""
___________________
Mathematische Hilfe
___________________

Auswahlmen\xfc:
"""    
    main_menu = menu("main", main_text)

    graph = menu("Graph")
          
    null_text = "Dieses Tool errechnet Ihnen die Nullstellen" \
                "der quadratischen Gleichung:"
    
    sub_graph1 = menu("Nullstellenberechnung", null_text, null)
    sub_graph2 = menu("Extrempunkte")
    sub_graph3 = menu("Grenzwerte")
    sub_graph4 = menu("Wertetabelle")
    
    graph.add_item(sub_graph1)
    graph.add_item(sub_graph2)
    graph.add_item(sub_graph3)
    graph.add_item(sub_graph4)
    
    main_menu.add_item(graph)
    
    sub_menu2 = menu("Kreis")
    main_menu.add_item(sub_menu2)
    
    sub_menu3 = menu("Kugel")
    main_menu.add_item(sub_menu3)

    main_menu.m_input()
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Mache dich mit Funktionen und Klassen vertraut und implementier eine Statemachine fuer soetwas.
Robokopp
User
Beiträge: 64
Registriert: Mittwoch 3. November 2010, 12:04

Habs soweit geschafft

hab das komplette Programm als Klasse definiert und am Ende jeder Funktion einen Klassenaufruf nach Eingabe gesetzt, um wieder ins Hauptmenü zurück zu kehren.
funzt alles Top :D
Mit dem Tutorial werde ich mich selbstverständlich trotzdem noch vertraut machen, mir gings halt jetzt erst ma um dieses eine Problem.

Jetzt hab ich noch eine kurze Frage:

Ich verwende den PyGTKEditor auf dem Handy, mit dem ich das Programm auch geschrieben hab.
Habe es jetzt am PC korrigiert, weils einfach etwas übersichtliches ist^^

Die Einrückungen hab ich per Tab gemacht.
Danach wollte ich das Programm ausführen, doch es ging nicht.
Habs mir aufs Handy gezogen und dort nochmal angeschaut und alles war komplett falsch eingerückt.

Ist Tab da die richtige Methode, oder genügt ein einfaches Leerzeichen?
Am Handy hab ich einen Button, der automatisch eine Einrückung vornimmt, ob das jetzt allerdings 2 Leerzeichen sind oder auch ein Tab weiß ich nicht.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Entweder 1 tab oder besser immer 4 leerzeichen
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
pillmuncher
User
Beiträge: 1532
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Thus spake the Lord: Thou shalt indent with four spaces. No more, no less.
Four shall be the number of spaces thou shalt indent, and the number of thy
indenting shall be four. Eight shalt thou not indent, nor either indent thou
two, excepting that thou then proceed to four. Tabs are right out.
In specifications, Murphy's Law supersedes Ohm's.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

So kann man das auch sagen :lol:

Woher ist das Zitat ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

https://www.xing.com/go/invite/18513630.6a91d4
Benutzeravatar
pillmuncher
User
Beiträge: 1532
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Xynon1 hat geschrieben:Woher ist das Zitat ?
Das Zitat wird oft als sig vewendet. Die ursprüngliche Quelle kenne ich leider selbst nicht.
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Monty Python and the Holy Grail

written by Graham Chapman, John Cleese, Terry Gilliam, Eric Idle, Terry Jones, & Michael Palin

Brother: (reading from Book of Armaments): And Saint Attila raised the hand grenade up on high, saying, 'O Lord, bless this Thy hand grenade that, with it, Thou mayest blow Thine enemies to tiny bits in Thy mercy.' And the Lord did grin, and the people did feast upon the lambs and sloths and carp and anchovies and orangutans and breakfast cereals and fruit bats and large chu--

Brother Maynard (Eric Idle): Skip a bit, Brother...

Brother: And the Lord spake, saying, "First shalt thou take out the Holy Pin, then shalt thou count to three, no more, no less. Three shalt be the number thou shalt count, and the number of the counting shalt be three. Four shalt thou not count, neither count thou two, excepting that thou then proceed to three. Five is right out. Once the number three, being the third number, be reached, then lobbest thou thy Holy Hand Grenade of Antioch towards thou foe, who being naughty in My sight, shall snuff it.

Brother Maynard: Amen.

King Arthur (Graham Chapman): Right.
http://www.youtube.com/watch?v=nzrc5Zbclpg
https://www.xing.com/go/invite/18513630.6a91d4
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Ah - das passt natürlich hervoragend.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
BlackJack

@Robokopp: Ich glaube nicht das Du es soweit geschafft hast. Es mag vielleicht funktionieren, aber ich bezweifle zum einen dass Deine Klasse sinnvoll ist und zum anderen befürchte ich nach der Beschreibung dass Du Aufrufe als reines ``GOTO`` missbrauchst und da eine Endlosrekursion gebastelt hast die immer mehr von Deinen Objekten erstellt.
Antworten