我是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
我会非常感谢一些指示,因为我此刻似乎完全陷入困境。
答案 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中完成同样的事情。例如,使用一对range
和itertools.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
行应该是其他循环(while
或for
,如其他答案所示),重新计算为original
。
所以我首先将n
的值复制到original
,如下所示:
original = n
希望有所帮助!
答案 5 :(得分:0)
那里有一些糟糕的格式。请记住正确缩进功能以及while
和if
语句。
首先,将n
设置为5.然后从那里开始倒计时,直到您通过while
循环达到0:
while n != -1:
print n
n -= 1
然后在循环中断后,再次重新计数并将n
重置为0:
n = 0
while n < 6:
print n
n += 1