循环Python类的困惑

时间:2016-11-15 15:57:58

标签: python class loops debugging while-loop

对不起,如果我没有正确地做到这一点,我是新来的。我试图使它成为raw_input循环通过每次保存self.x的值,以便它询问" r或l"?每当你点击Enter,然后提高或降低self.x但我不知道如何。如果有人能检查我的工作,那将意味着很多。谢谢。

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()

我也试过这个,但即使我试图再次调用main(),它也没有保存self.x的值。

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()

任何帮助都非常有用,谢谢!

1 个答案:

答案 0 :(得分: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循环的条件迭代一段确定的次数,可以连续增加一个常量并检查它是否已达到所需的极限:

#... 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()