例如,如果我有 2452834,那么總和 = 1x2 2x4 3x5 4x2 5x8 6x3 7x4 = 2 8 15 8 40 18 28 = 119 這就是我得到的正確的軌道上。
base_id_num = input()
n=0
for z in range (1, len(base_id_num)):
base_id_num[n] = base_id_num[n] * n
n =1
print(base_id_num)
uj5u.com熱心網友回復:
假設我們傳入一個字串,這可以與您的操作方式類似,但對您的字串索引進行零索引:
base_id_num = input()
result = 0
for i in range(len(base_id_num)):
result = i * int(base_id_num[i])
print(result)
uj5u.com熱心網友回復:
假設您將輸入作為字串。
您可以使用內置函式 enumerate() 來完成此任務,而不是創建新變數并按索引訪問專案。
result = 0
base_id_num = input()
for index,item in enumerate(base_id_num):
result = int(item) * index
print(result)
uj5u.com熱心網友回復:
使用 list comp 和內置 sum() 函式:
b = list(base_id_num) #assuming the base_id_number is of type str
result = sum(int(i) * (id 1) for id, i in enumerate(b))
輸出:
print(result)
119
uj5u.com熱心網友回復:
您可以使用enumerate,它將為您提供索引(在索引 0 處)和值(在索引 1 處)。之后,使用map將這兩個索引相乘(根據您的要求向索引添加一個),最后sum它們
sum(map(lambda x: (x[0] 1) * int(x[1]), enumerate(input())))
對于 2452834,這會給你
119
我為這里提供的 2 種方法做了一個快速的時間基準測驗,似乎來自@Samwise 的評論仍然是禁食的
%timeit sum(map(lambda x: (x[0] 1) * int(x[1]), enumerate(str(2452834))))
100000 個回圈,最好的 5 個:每個回圈 3.22 μs
%timeit sum(i * int(n) for i, n in enumerate(str(2452834), 1))
最慢的運行時間比最快的運行時間長 4.67 倍。這可能意味著正在快取中間結果。100000 個回圈,最好的 5 個:每個回圈 2.58 μs
基于基準的更新:從 1 開始列舉,像 @samwise 改進一些東西,
%timeit sum(map(lambda x: x[0] * int(x[1]), enumerate(str(2452834),1)))
最慢的運行時間比最快的運行時間長 4.98 倍。這可能意味著正在快取中間結果。100000 個回圈,最好的 5 個:每個回圈 2.92 μs
uj5u.com熱心網友回復:
嗨兄弟@DAN_ET,你給出了一個公平的答案,而且有點過于優化。所以我允許自己提供一個更詳細的解決方案,以方便我們朋友的理解。
base_id_num: str = "2452834"
input_len = len(base_id_num) 1
som: int = 0
echo = ""
incr = 0
for i in range(1, input_len):
incr = i - 1
som = i * int(base_id_num[incr])
echo = f'{i}x{int(base_id_num[incr])} '
print(som)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322313.html
上一篇:將“專案”從一本字典移動到新串列
