2016-11-15 142 views
-1

對不起,如果我不這樣做,我是新來的。我試圖讓raw_input每次循環保存self.x的值,以便它詢問「r或l」?每當你點擊輸入,然後提高或降低self.x,但我不知道如何。如果有人能檢查我的工作,那意味着很多。謝謝。循環Python類的困惑

q = raw_input("r or l: ") 
class game: 
    def __init__(self): 
     self.x = 0 
    def raise_n(self): 
     self.x += 1 
     return self.x 
    def lower_n(self): 
     self.x -= 1 
     return self.x 
    def main(): 
     g = game() 
     while q == "r": 
     print g.raise_n() 
     break 
    while q == "l": 
     print g.lower_n() 
     break 
main() 

我也試過這個,但是它沒有保存self.x的值,即使我試圖再次調用main()。

q = raw_input("r or l: ") 
class game: 
    def __init__(self): 
     self.x = 0 
    def raise_n(self): 
     self.x += 1 
     return self.x 
    def lower_n(self): 
     self.x -= 1 
     return self.x 
def main(): 
    g = game() 
    while q == "r": 
     print g.raise_n() 
     break 
    while q == "l": 
     print g.lower_n() 
     break 
main() 

任何幫助將是非常有用的,謝謝!

+0

會發生什麼情況?你期望會發生什麼?你有什麼嘗試? –

+0

'q'超出了你的功能範圍.... – MooingRawr

回答

0

您的第二種方法更接近有效的解決方案。有幾種方法,下面我向你們展示一種方法,而不會引入太多變化。基本上:

  • main()函數在無限循環中執行。如果要更改停止條件,請更改True條件。

  • 每次進入main()函數時都會詢問和評估問題。之後,它會檢查是否必須運行raise_n()lower_n()方法。

的代碼:

class game(): 
    def __init__(self): 
     self.x = 0 
    def raise_n(self): 
     self.x += 1 
     return self.x 
    def lower_n(self): 
     self.x -= 1 
     return self.x 

def main(): 
    q = raw_input("r or l: ")   
    if q == "r": 
     print g.raise_n()    
    if q == "l": 
     print g.lower_n() 

g = game() 
while True: 
    main() 

編輯:爲了把作爲條件while循環迭代的次數determinated號,常數可以succesively增加和校驗如果已達到期望的限制:

#... Copy previous code here 
g = game() 
iterations_limit = 10 #Substitute 10 by any positive integer 
while k > iterations_limit: 
    k += 1 #Increase variable k 
    main()  
+0

我不明白......我會用什麼來代替while循環?我試圖在顯示輸入(+1或-1)後重復它,以便可以再次提高數字。謝謝您的幫助。 – Luke

+0

@Luke如果你沒有改變True條件,它將無限循環,你只能用一個用戶中斷來停止它(例如按Ctrl + C)。如果是這種情況,你最終將無法得到結果。所以,你可以設置一個條件。例如,您可以在每個循環中詢問用戶是否要繼續,或者您可以堅持定義的迭代次數 – Jalo

+0

但是,我將如何建立若干迭代?我能想到做到這一點的唯一方法就是使用「休息」,但這並不奏效。對不起,有很多問題,我是python的新手。 – Luke