倒计时然后再上来

时间:2015-09-24 23:59:14

标签: python

我是python的新手,并试图运行一个函数,给定一个变量,倒数到零,然后到原始变量。输出应该如下所示:

>>> functionname(5)
5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5

到目前为止,我已经编写了下面的代码,但这并没有一直计入原始变量。我想我需要以某种方式保存变量以便稍后引用它,但我不知道如何做到这一点,因为python会随着函数的继续自动更改n

def functionname(n):
    n = orginal
    while n > 0:
        print n
        n=n-1
    print n
    if n==0:
        print n
        n=n+1

我会非常感谢一些指示,因为我此刻似乎完全陷入困境。

6 个答案:

答案 0 :(得分:3)

从负数到正数并使用数学:

def fn(n):
    print ', '.join(str(abs(i)) for i in range(-n, n+1))
fn(5)
# 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5

指针:

  • 如果您已经知道要迭代的范围,那么使用for循环而不是while会更清晰,更直接。
  • 您可以使用range函数生成数字序列。
  • 您可以像我上面那样将简单的for循环转换为列表推导。

"简单"清洁实施您的要求将如下所示:

def fn(n):
    for i in range(n, 0, -1):
        print i,
    for i in range(n + 1):
        print i,

其他说明:

  • range也可以向后计算
  • range的结束参数不包含在范围内,这就是为什么第二个循环将n + 1指定为限制(而不仅仅是n的原因)
  • print上添加一个逗号,使其在末尾添加空格而不是换行符。

答案 1 :(得分:1)

你的第二个块是if n == 0:(你知道它是因为while循环终止n命中0时;大概你想要while n <= 5

请注意,有更好的方法可以在Python中完成同样的事情。例如,使用一对rangeitertools.chain来逐个迭代每个range,可以简化为:

import itertools

def functionname(n):
    for i in itertools.chain(range(n, 0, -1), range(n+1)):
        print i

答案 2 :(得分:1)

就个人而言,我做的事情就像......

def count(n):
    for x in range(n, -n, -1):
        print(str(abs(x)) + ",")

根据dlewin的建议,这里有一个列表理解...

def count(n):
    print(','.join(str(abs(x)) for x in range(n, -n, -1)))

答案 3 :(得分:0)

你需要第二个while循环,从0开始,然后返回到&#34; original&#34;。 你知道&#34; for&#34;循环了吗?那些更适合计算。

答案 4 :(得分:0)

您对original的想法是正确的,但是您使用赋值运算符的方法是错误的。此外,if n==0行应该是其他循环(whilefor,如其他答案所示),重新计算为original

所以我首先将n的值复制到original,如下所示:

original = n

希望有所帮助!

答案 5 :(得分:0)

那里有一些糟糕的格式。请记住正确缩进功能以及whileif语句。

首先,将n设置为5.然后从那里开始倒计时,直到您通过while循环达到0:

while n != -1:
    print n
    n -= 1

然后在循环中断后,再次重新计数并将n重置为0:

n = 0
while n < 6:
    print n
    n += 1
相关问题