循环Python类的困惑
问题描述:
对不起,如果我不这样做,我是新来的。我试图让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()
任何帮助将是非常有用的,谢谢!
答
您的第二种方法更接近有效的解决方案。有几种方法,下面我向你们展示一种方法,而不会引入太多变化。基本上:
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()
会发生什么情况?你期望会发生什么?你有什么尝试? –
'q'超出了你的功能范围.... – MooingRawr