2016-11-15 155 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