具有两个参数的倒计时功能

时间:2014-08-08 06:04:01

标签: python

我正在尝试使用两个参数创建倒计时函数,而不使用range以外的任何内置函数(如果需要)。我只想使用loops

该功能根据给定的参数倒计时。例如,如果我输入countDown(10, 2),那么它会从10开始倒计时并减去2,并且不应打印超过数字1的任何内容。所以它看起来像:

>>>countdown(10,2)
       10
       8
       6
       4
       2
       Blastoff!

我知道怎么写一个类似的倒计时代码,没有上面列出的条件,只使用一个参数:

def countdown(n):
  if n == 0: 
     print "Blastoff!" 
  else: 
     print n 
     countdown(n-1)

但是我在使用带有两个参数的循环编码上面列出的条件时遇到了问题。

3 个答案:

答案 0 :(得分:2)

这应该适合你:

def countdown(n, m):
  if n <= 0: 
     print "Blastoff!" 
  else: 
     print n 
     countdown(n - m, m)   #reduce m from n and recursive call to countdown

使用while循环:

def countdown(n, m):
  while n > 0:
     print n
     n -= m

  print "Blastoff!" 

答案 1 :(得分:2)

这是一个只使用简单的非递归循环的版本:

def countdown(n, m):
    for i in range(n, 0, -m):
        print i
    print "Blastoff!"

工作原理:

python函数range最多使用三个参数:起始值,停止值和增量。因此,range(n, 0, -m)n开始倒计时,在到达0之前停止,使用-m作为增量。您可以在python命令行上观察到这一点。只需在命令提示符下键入python,您将看到>>>提示符。然后键入命令range(10, 0, -2)并按return:

>>> range(10, 0, -2)
[10, 8, 6, 4, 2]

输入命令后,python返回[10, 8, 6, 4, 2],这是range返回的值。这是一个数字列表。

for循环遍历range(n, 0, -m)返回的每个值并打印出来。您也可以在命令行中看到:

>>> for i in range(10, 0, -2): print i
... 
10
8
6
4
2

当我们完成range返回的值的循环后,我们打印Blastoff!并且函数已完成。

答案 2 :(得分:0)

# Recursive method with 2 parameters    
def countdown (n, step):
    if n <= 0:
        print "Blastoff!"
    else:
        print n
        countdown (n-step, step)

def main():
    countdown (10, 2)

main()