轉自: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);
區別就在於()