2014-12-01 34 views
2

我終於過濾我的腳本只輸出我想要的。 它工作...一半!計數線蟒蛇不使用文本文件

有了一些驚人的人在這裏,我設法創建一個自動上接受snapchat好友請求,但我想在它的計數器看到多少證實的朋友有人有腳本的幫助。

這不是最大的問題,雖然,我已經固定它。 通過使用下面的代碼;

for friend in friends: 
    if friend['type'] == 0: 
     names = friend[u'name'] 
     print names 

它打印的名字好聽,我舉例來說結果是:

test.account2 
test.account3 
test.account4 
etc... 

這是真棒,到目前爲止。

現在我想算,有多少朋友,實際上是和打印數量。

因此,在這種情況下,這個數字將是3(顯然,不走的是「等」記)

雖然,我都試過了,LEN,計數,str.count和很多其他的東西,但它似乎並沒有工作。所有的 首先,它打印出來的3倍,這是我得到的,因爲它的縮進。 但移動縮進背,使得「忘記」 names

到目前爲止我manged做的唯一事情就是打印出來以下列方式全部3名的字母數:

13 
13 
13 

上午我在這裏忽略了一些東西,還是隻是愚蠢?

幫助表示讚賞!

+0

你是什麼意思「但它似乎沒有工作」?內置函數len()必須返回有效的數組長度。什麼是朋友類型的變量? – Ivan 2014-12-01 17:48:40

+0

你能粘貼你的完整代碼嗎?你知道命名空間嗎?從'if'獲得'names'使其具有價值。所以'print names'應該給出一個錯誤,因爲'names'沒有被定義。 – Netro 2014-12-01 17:50:09

+0

真的,變量'names'應該被稱爲'name'。這可能會幫助你思考你在做什麼。 – 2014-12-01 17:56:44

回答

3

names變量不是數組。它僅存儲當前好友項目的名稱,因爲friends已循環。因此,你也是3次得到13的長度,因爲它只是遇到特定名稱字符串的字符數。

要得到名稱的數組,你可以這樣做:

names = [] 
for friend in friends: 
    if friend['type'] == 0: 
     names.append(friend[u'name']) 

或者簡單:

names = [friend[u'name'] for friend in friends if friend['type'] == 0] 

然後len(names)將提供名稱計數。

+0

非常感謝,它像一個魅力! – Snowlav 2014-12-01 18:22:30

3

你看到13,因爲這是每名test.account2的長度等,這是因爲你在names稱爲len這樣len(names)這是不是你想要的。

初始化列表中的for循環以上:name_list = []和名稱添加到這個列表:

name_list = [] 
for friend in friends: 
    if friend['type'] == 0: 
     names = friend[u'name'] 
     print names 
     name_list.append(names) 

print 'Added %d names' % (len(name_list)) 

最終print現在應該轉儲3按你的例子​​。

+0

感謝您的意見,絕對幫助我:) – Snowlav 2014-12-01 18:22:47