2016-10-22 5 views
-1

Für ein größeres Projekt für meine Schularbeit nach den Ferien muss ich wissen, wie ich von verschiedenen Funktionen in einem Menü drucken kann, wie unten zu sehen, aber ich kann es nicht mit der Klassenfunktion arbeiten ist weit jenseits meines Niveaus.Python Drucken von Funktionen

class C: 


    def set_gen(self): 
     self.birth_rate = input("whats your name") 
     menu() 

    def display_gen(self): 
     print (self.birth_rate) 
     menu() 


def menu(): 
     q=input("press a to ask or b to print") 
     if q==("a"): 
      RUN = C() 
      RUN.set_gen() 
     elif q==("b"): 
      RUN = C() 
      RUN.display_gen() 
     else: 
      menu() 
RUN = C() 
menu() 
+1

„Ich kann es nicht an der Arbeit“ - was genau kann man nicht an der Arbeit ????? –

+0

Innerhalb der Klasse führen Sie 'menu()' aus, die wiederum die Klasse ausführen, die 'menu()' erneut ausführen - usw. Es ist Rekursion. Mach es ohne Rekursion. – furas

+0

Leser sind im Allgemeinen nicht scharf darauf, Anfragen für "so schnell wie möglich" oder "dringlich" zu sehen. [Lesen Sie diese Diskussion] (http://meta.stackoverflow.com/q/326569) um zu verstehen, warum - danke. – halfer

Antwort

0

Ich bin mir nicht sicher, was Sie versuchen zu tun, aber Sie erstellen RUN viele Male, so dass Sie klare self.birth_rate in diesem Objekt - Sie haben es nur einmal zu erstellen. Außerdem sollten Sie den Standardwert für self.birth_rate setzen, da Sie display_gen vor set_gen verwenden können und einen Fehler erhalten, weil self.birth_rate noch nicht existiert.

Neben der Klasse menu() starten Sie die Klasse erneut und es wird menu() ausgeführt. Es ist Rekursion. Bessere Verwendung while True Schleife.

class C: 

    def __init__(self): 
     # default value at start 
     self.birth_rate = None 

    def set_gen(self): 
     self.birth_rate = input("whats your name: ") 

    def display_gen(self): 
     print(self.birth_rate) 

# ---------------------------------------------------- 

def menu(): 

    # create object only once 
    run = C() 

    # endless loop till you press `q` 
    while True: 

     q = input("a = ask, p = print, q = quit: ") 

     if q == "q": 
      break # exit `while` loop 
     elif q == "a": 
      run.set_gen() # set value in object 
     elif q == "p": 
      run.display_gen() # print value in object 

# ---------------------------------------------------- 

menu() 
1
class C: 

    def set_gen(self): 
     self.birth_rate = raw_input("whats your name: ") 

    def display_gen(self): 
     print (self.birth_rate) 



def menu(): 
     RUN = C() #create a C object 
     while True: 
      q=raw_input("press a to ask or b to print: ") 

      if q==("a"): 
       RUN.set_gen() 
      elif q==("b"): 
       RUN.display_gen() 





menu() #Call the main function