我需要编写一个倒计时的代码,逐步减少直至达到零,然后在每个整数之间再次向上计数.
作为一个例子,如果我定义一个函数updown(n)和write updown(7),它应该给出:
6 4 2 0 1 2 3 4 5 6 7
这是我的尝试:
def updown(n,m):
while n>=1:
print(n-1)
n=n-m
while n<=7:
print(n)
n=n+1
它需要m步,在我的情况下m = 2.当我运行代码时,我得到了
6 4 2 0 -1 0 1 2 3 4 5 6 7
如您所见,出现负整数,这是错误的.另外,我在代码中有n <= 7,我知道这是错误的.它应该对任何n插入都有效,并将该值用作上限. 我被困住了,不知道该怎么办.它应该是一个递归代码,不应使用内置函数.原因是我想了解基础知识,并从那里继续,没有任何捷径.
最佳答案 我认为通过使用n-1,你会使事情变得更加复杂.
只需首先计算小于给定数字的最大偶数:
n2 = n-(n%2)
或更一般(对于m):
nm = n-(n%m)
下次使用range
:
for i in range(nm,-1,-m):
print(i)
最后打印0的所有数字,包括n:
for i in range(n+1):
print(i)
或者把它们放在一起:
def updown(n,m):
nm = n-(n%m)
for i in range(nm,-1,-m):
print(i)
for i in range(n+1):
print(i)
根据我自己的经验,修改变量是相当不灵活的. Python旨在有点声明:如果变量可以有不同的值来迭代它,则使用for循环.