python-3.x - 在 python 中,Range() 函数用于正输入和负输入

  显示原文与译文双语对照的内容
125 2

我想做一个简单的程序,把一个范围A 到B的所有数字都打印出来,包括。

对于正数,我知道代码应该如下所示:

Range(A, B+1)

但是当输入为负数时,范围中的最后一个数字将不被包含。如何让它在正输入和负输入工作中进行编码?

非常感谢 !

时间:原作者:0个回答

137 3

我认为我不正确地理解这个问题。有 3种情况:

  • AB 均为正
  • A 负,B
  • AB 均为负数

现在如果我这样做:

>>> A = 10; B = 20 # case 1
>>> range(A,B+1)
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>> A = -10; B = 2 # case 2
>>> range(A,B+1)
[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2]
>>> A = -10; B = -2 # case 3
>>> range(A,B+1)
[-10, -9, -8, -7, -6, -5, -4, -3, -2]

So 的最后一个数字,这是不符合我能看到的。

如果在 A> B 中接收输入数据,那么问题不是负数,但 range() 期望值为升序。

要覆盖:

>>> A = 2; B = -2 # case 4
>>> A,B = sorted((A,B))
>>> range(A,B+1)
[-2, -1, 0, 1, 2]

这也适用于 1.2和 3情况。

如果我误解了这个问题,请编辑它以阐明。

原作者:
121 4

我知道你为什么要面对这个问题。因为你使用较大的值作为第一个参数,并且在 range ( 这是由于负号而发生的。)的第二个参数中使用更小的值。

对于以下情况,代码将工作:

a = 5
b = -5
step = 1 
if b <0:
 step = -1
range (a, b + step, step)
原作者:
145 0

请检查这是否有效。谢谢你。

if A>B and A <0 and B <0:
 print(list(range(A,B,-1)))
elif A<B:
 print(list(range(A,B)))
else:
 print(list(range(A,B,-1)))
原作者:
122 0

范围函数语法如下

range(start, stop, step) #step is optional

为了得到负数

range(-5,0)

输出

-5
-4
-3
-2
-1
原作者:
100 3

python 范围中不包括最后一个数字。你需要相应地调整代码。
e.g 。要将值打印为 -5至 -1 ( 包含),请使用

>>> print(list(range(-5, 0)))
[-5, -4, -3, -2, -1]

相反顺序

>>> print(list(range(-1, -6, -1)))
[-1, -2, -3, -4, -5]
原作者:
...