带两个参数的倒计时函数
我正在尝试创建一个倒计时的函数,这个函数有两个参数,并且除了可以使用range
(如果需要的话),我不想用任何内置的函数。我只想用循环
来实现。
这个函数会根据给定的参数进行倒计时。例如,如果我输入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
# 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()
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
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!"
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)
并按回车:
>>> 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!
,这个函数就完成了。