2016-10-22 115 views
-1

對於假期後我的學校工作更大的項目,我需要知道如何從菜單中的不同功能打印,如下所示,但是我無法使用類功能超出了我的水平。從功能上打印Python

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

「我無法得到它的工作」 - 正是你能不能去上班????? –

+0

裏面你運行'menu()',它再次運行類,它再次運行'menu()'等 - 它是遞歸的。不用遞歸就可以做到。 – furas

+0

讀者通常不願意看到「儘快」的請求,或者就此而言,「緊急」。 [閱讀此討論](http://meta.stackoverflow.com/q/326569)瞭解爲什麼 - 謝謝。 – halfer

回答

0

我不知道你試圖做什麼,而是你創造RUN很多次,所以你在這個對象明確self.birth_rate - 你必須一次創建它。此外,您應該爲self.birth_rate設置默認值,因爲您可能在set_gen之前使用display_gen,並且由於self.birth_rate尚不存在而獲取錯誤。

除了在課上你運行menu()它再次運行類,它運行menu()。這是遞歸。更好地使用while True循環。

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