我如何為“for”回圈進行交替步驟?即數列(-1,2,-3,4,-5)
我知道如何使所有負面的
n=int(input())
for i in range (1,n 1):
i=i*(-1)
print(i)
我確定有更好的方法來做到這一點,但是我如何為 n=2,4,6... 邁出第二步?再放一個 i=i*(-1) 讓它再次變得
uj5u.com熱心網友回復:
您可以添加一個檢查偶數/奇數的條件:
for i in range(1, n 1):
if i%2 == 0:
print(i)
else:
print(-i)
在回圈內部更改回圈迭代器(在這種情況下)不是一個好習慣i,因此如果您需要存盤該值而不僅僅是列印它,請將其保存在第二個變數中。
uj5u.com熱心網友回復:
您可以引入奇偶校驗,即檢查i當前互動的值是偶數還是奇數。這可以使用模運算子來實作%。
n = int(input())
for i in range(1, n 1):
if i % 2 == 0:
print(i)
else:
print(-i)
uj5u.com熱心網友回復:
使用數學奇數是負數,-1 到奇數的冪是 -1 所以我們將奇數乘以 (-1)^i 與偶數相同的方式,因為 -1 到偶數的冪是 1 所以通常在我們的情況下<1, 2, 3, 4, ...> 中的每個數字都映射到 <-1, 2, -3, 4, ...>
>>> for i in range(1, n 1):
... j = i * (-1)**i
... print(j)
...
-1
2
-3
4
-5
uj5u.com熱心網友回復:
將 -1 提高到 -1 的奇數次冪和 1 的偶數次冪是我的做法。取決于您是否想要“奇數負數”或“前三五數”負數。
您也可以只保持“翻轉”:
flip = -1 # first number will be negative; make it 1 for first number postive
for i in range(1, n 1):
print(i * flip)
flip *= -1
# output:
-1
2
-3
4
-5
您可以將itertools.cycle()其與串列一起使用,[-1, 1]并將zip其與您的范圍一起使用。
uj5u.com熱心網友回復:
考慮這個問題的另一種方法是你有兩個序列,一個是正值,一個是負值,你在它們之間交替以產生結果。也就是說,您將這些序列中的值交錯。第三方Toolz庫有很多有用的功能,例如interleave:
from toolz.itertoolz import interleave
n = 5
positives = range(2, n 1, 2)
negatives = range(-1, -(n 1), -2)
combined = interleave([negatives, positives])
for i in combined:
print(i)
uj5u.com熱心網友回復:
我添加了如果檢查數字的部分不是偶數。它提供了與 -1 相乘的奇數。
n=int(input())
for i in range (1,n 1):
if i%2!=0:
i=i*(-1)
print(i)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/479431.html
標籤:Python python-3.x for循环 负数
