python TypeError: 'int' object is not iterable

轉自:http://blog.csdn.net/carolzhang8406/article/details/6100196

1 尋找平衡點:

假如一個數組中的元素,其前面的部分等於後面的部分,那麼這個點的位序就是平衡點 


numbers = [1,3,5,7,8,25,4,20,29]; 
sum = 0;
for num in numbers:
    sum += num;#求出數組的和

for index in range(len(numbers)):
    former = 0;
    after = 0;
    i = 0;
    for i in range(index):#求出當前循環點的前半段數據
        former += numbers[i];
    after = sum - former - numbers[index];#用和減去當前數和前半部分和
    
    if(former == after):
        print ("The balance point is:",numbers[index]);


由於是初學,所以第一個程序遇到問題是難免的,談一下我遇到的問題:

(1)for循環中的遞增迭代: for index in range(len(numbers)): 對於數組的索引迭代,需要用到len()求數組的長度,用range進行索引迭代。

 

  for i in range(index):在這句循環的時候,本來我的意思是i 遞增到index 循環,但是非常不幸運,編譯不過:

Traceback (most recent call last):
  File "BalancePoint.py", line 15, in <module>
    for i in index:
TypeError: 'int' object is not iterable

查了下,原來不能直接用int進行迭代,而必須加個range.

 

 

2 刪除list裏面的重複元素:

 

方法一:直接將list 轉變爲set

 

a = [1,2,3,3,4,5,1,1]
a = list(set(a))                    # ? set ?????
print (a,"/n");

 

shit,我居然還沒學到set,這是在網上看到的方法。NND,我很鬱悶的說!我用的是傳統的方法,折騰死我了,不得不說,很久沒寫代碼了,生疏了!

 

方法二: 就算排序,然後逐個比較,鑑於del會直接把元素刪除,設置了個flag數組來標記該刪除的元素:

 

NameList = ["Carol","Andy","Terry","Feng","Carol","Jie","Terry"];

NameList.sort();
Flag=[];
for index in range(len(NameList)):
    Flag.insert(index,0);# = 0;

index =0;
secondIndex=0;
for index in range(len(NameList)-1):
    inx = index+1;
    for secondIndex in NameList[index+1:]:
        if (NameList[index]== secondIndex):
            #del NameList[secondIndex];
            #Flag.insert(secondIndex,1);
            Flag[index] = 1;
        inx = inx +1;
print("/n");
print (Flag,"/n");
index = 0;
end = range(len(NameList));
for index in end:
    if (Flag[index] ==1):
        del NameList[index];
        #print (index,"/n");
    
print (NameList,"/n");

 

說一下我遇到的問題:

第一個,定義一個和原來list長度相同的全爲零的數組。

Flag=[];
for index in range(len(NameList)):
    Flag.insert(index,0);# = 0;

這個寫就可以了,比較鬱悶的是最開始沒定義Flag[].到後面使用的時候一直報錯。

 

第二個: for secondIndex in NameList[index+1:]:

我最開始是這麼寫的 for secondIndex in NameList:,然後再這句話前頭賦值 secondIndex=NameList[index+1];

然後一直就debug不對,seondIndex直接從第一個元素開始,最開始還以爲是涉及全局變量和局部變量的問題,還使了global,結果根本就不是,我的理解是 secondIndex在這裏直接被賦值了,因爲in NameList是從最初開始循環的,my lady gaga!我很鬱悶!

 

第三個: 這個不算問題,主要是還是對語法不是很熟悉,纔開始學,最開始飲用list裏面的元素我是這麼寫的NameList(index+1);

區別就在於()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章