python – 倒计时然后再向上

我需要编写一个倒计时的代码,逐步减少直至达到零,然后在每个整数之间再次向上计数.

作为一个例子,如果我定义一个函数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循环.

点赞