我有一个简单的python应用程序,从10减少到0。我有它工作,除了它打印10次打印消息。 这是我的代码:
CountDown.py
:
import sys
import counter
def main():
A = counter.counter()
A.counter(10)
if __name__ == "__main__":
sys.exit(int(main() or 0))
counter.py
:
class counter(object):
def __init__(self):
pass
#return super(counter, self).__init__(*args, **kwargs)
"""description of class"""
def counter(self,a):
if a == 0:
print ('BlastOff')
else:
print ('T equal:', a)
a -= 1
self.counter(a)
print ('Exiting from countdown(',a,')')
return 1
这是我在控制台窗口收到的内容。
('T equal:', 10)
('T equal:', 9)
('T equal:', 8)
('T equal:', 7)
('T equal:', 6)
('T equal:', 5)
('T equal:', 4)
('T equal:', 3)
('T equal:', 2)
('T equal:', 1)
BlastOff
('Existing from countdown(', 0, ')')
('Existing from countdown(', 0, ')')
('Existing from countdown(', 1, ')')
('Existing from countdown(', 2, ')')
('Existing from countdown(', 3, ')')
('Existing from countdown(', 4, ')')
('Existing from countdown(', 5, ')')
('Existing from countdown(', 6, ')')
('Existing from countdown(', 7, ')')
('Existing from countdown(', 8, ')')
('Existing from countdown(', 9, ')')
Press any key to continue . . .
如何阻止多个'Existing from countdown'
?
答案 0 :(得分:1)
"('Existing from countdown(', 0, ')')"
将在您的计划中打印两次。
一次,当a == 0时,再次当a == 1
时。
这是因为您在递归通话之前设置了a =- 1
,因此在打印之前1
将设置为0
。
相反,你可能想要做的是删除"a-=1"
并调用self.counter(a - 1)
,而a
的值在当前范围内不会更改。
答案 1 :(得分:0)
如果在return
子句中添加else:
语句,则会避免打印大部分"退出"打印输出。
else:
print ('T equal:', a)
a -= 1
return self.counter(a)