2016-12-05 77 views
-1

我有一個列表:python的列表,元組和循環

a=[1, 2, 3, 300] # this is IDs of workers 

和元組的列表:(A [1]),它有一個相關的

f=[(1, 1, 1), (1, 0, 0), (0, 0, 0), (1, 500, 600)] 

爲了在每一個元素f(f [i))中的元素(元組)。所以我需要的是將f [i]中的元素總和爲每個[i],直到根據用戶的某個指數。例如,如果用戶希望求和結束,直到某個索引爲2,則輸出爲ID 1 = a [0] - > sum將爲2(f [0] = 1 + f [1] = 1)對於ID 2 = a [2] - >總和爲1 [f [0] = 0 + f [1] = 1]等等,直到[3] 這裏是我的代碼:

str1=int(input('enter the index[enter -->1/2/3]')) 
a=[1, 2, 3, 300] 
f=[(1, 1, 1), (1, 0, 0), (0, 0, 0), (1, 500, 600)] 
length=len(a) 
temp=0 #sum 
for i in range(0,length): 
    y=a[i] 
    att_2=f[i] 
    print("{} {}".format("The worker ID is ", y)) 
    for z in range(0,(str1)): 
     temp=temp+att_2[i] 
     print(temp) # tracing the sum 

我得到一個錯誤加錯誤的結果對於一些A [1]:

enter the index[enter -->1/2/3]2 
temp=temp+att_2[i] 
IndexError: tuple index out of range 
The Student ID is 1 
1 
2 
The Student ID is 2 
2 
2 
The Student ID is 3 
2 
2 
The Student ID is 300 

Process finished with exit code 1 

我試圖修正這些錯誤,但我不能找到它的原因。謝謝

回答

0

你的錯誤是因爲你混合了變量i和變量z

您的代碼使用變量i循環遍歷元組,並且會導致錯誤,因爲最大值i將採用另一組指令進行計算。

的變量第11行的開關將解決您的問題

原文:

str1=int(input('enter the index[enter -->1/2/3]')) 
a=[1, 2, 3, 300] 
f=[(1, 1, 1), (1, 0, 0), (0, 0, 0), (1, 500, 600)] 
length=len(a) 
temp=0 #sum 
for i in range(0,length): 
    y=a[i] 
    att_2=f[i] 
    print("{} {}".format("The worker ID is ", y)) 
    for z in range(0,(str1)): 
     temp=temp+att_2[i] 
     print(temp) # tracing the sum 

新:

str1=int(input('enter the index[enter -->1/2/3]')) 
a=[1, 2, 3, 300] 
f=[(1, 1, 1), (1, 0, 0), (0, 0, 0), (1, 500, 600)] 
length=len(a) 
temp=0 #sum 
for i in range(0,length): 
    y=a[i] 
    att_2=f[i] 
    print("{} {}".format("The worker ID is ", y)) 
    for z in range(0,(str1)): 
     temp=temp+att_2[z] 
     print(temp) # tracing the sum