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]
原作者:
...