2014-06-21 175 views
0

我工作的一個Python鍛鍊Codecademy網站,並就死在什麼看起來像一個簡單的問題:的Python for循環錯誤

寫一個函數fizz_count()通過列表中的所有元素循環。當元素爲'fizz'時,增加一個名爲count的計數器。然後返回count的值。

我的代碼:

def fizz_count(x): 
    count = 0 
    for i in x: 
    if x[i] == 'fizz': 
     count = count + 1 
    return count 

我收到此錯誤信息:

An exception was raised for fizz_count(['fizz', 'buzz']): list indices must 
be integers not str 

一切都是原始形式顯示。我找不出錯誤在哪裏。

+1

這個錯誤告訴你*確切*錯誤所在 - 如果列表索引必須是整數,但實際上是一個字符串,那麼'i'是一個字符串。爲什麼不打印我找出原因? – jonrsharpe

回答

4

如果x是元素的序列,當你做

for i in x: 

你是通過x元素循環,而不是通過索引。

所以,當你做

x[i] 

你正在做

x[element] 

這是沒有意義的。

你能做什麼?

您可以'fizz'元素比較:

for element in x: 
    if element == 'fizz': 
     # ... 
+0

是的,我只是想通了。這不是C++:P謝謝! – MNRC

3

您正在通過列表['fizz', 'buzz'])因此i等於fizzbuzz不是整數。 嘗試if i =="fizz"

def fizz_count(x): 
    count = 0 
    for i in x: 
    if i == 'fizz': # i will be each element in your list 
     count = count + 1 
    return count 
0

當你使用{因爲我在X}然後在這裏「i」是列表中的項目,而不是指數。因此,

更正後的代碼是:

def fizz_count(x): 
    count = 0 
    for i in x: 
    if i == 'fizz': 
     count = count + 1 
    return count 

print fizz_count(['fizz', 'buzz']) 

輸出

1