我正在Codecademy进行Python练习,并且陷入了一个简单的问题:
编写一个循环遍历列表所有元素的函数
的值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
所有内容的格式完全如图所示。我无法弄清楚错误的位置。
答案 0 :(得分:4)
如果x
是一系列元素,那么当你做
for i in x:
您正在遍历x
的元素,而不是通过索引。
所以当你这样做时
x[i]
你正在做什么
x[element]
没有任何意义。
你能做什么?
您可以将元素与'fizz'
进行比较:
for element in x:
if element == 'fizz':
# ...
答案 1 :(得分:3)
您正在传递列表['fizz', 'buzz'])
,因此i
等于fizz
或buzz
不是整数。
试试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
答案 2 :(得分:0)
当您在x中使用{for i}时,此处' 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