TypeError:'int'对象在python中不是可迭代的错误

goo*_*ser 2 python-3.x

counter = 0
for i in len(s):
    if i in ('a','e','i','o','u'):
        counter += 1
print("Number of vowels:" + str(counter))
Run Code Online (Sandbox Code Playgroud)

我正在尝试制作一个程序来计算元音的数量,假设它s是一个预定义的字符串。但我收到一个错误:

“int”对象在python中不是可迭代的错误

小智 5

我会让我的答案比它应该更长一点。

如果您不需要i循环中操作的索引的数字表示,您只需遍历字符串:

for i in s:
    do_something()
Run Code Online (Sandbox Code Playgroud)

如果您只需要数字表示i,例如您有一个“字符串”,但您需要[0,1,2,3,4,5],您可以这样做:

for i in range(len(s)):
    do_something(i)
Run Code Online (Sandbox Code Playgroud)

让我们分解一下。s是一个str()len以整数值形式返回对象的长度,例如,len('string') = 6。你不能迭代一个整数,因为 python 的for实际上是一个foreach. 所以你需要一个可迭代的对象,它是range(len(s))

如果您需要这两个符号和索引,你可以这样做:

for i, symbol in enumerate(s):
    do_something(i,symbol)
Run Code Online (Sandbox Code Playgroud)

例如,这段代码:

for i, symbol in enumerate('string'):
    print(i,symbol)
Run Code Online (Sandbox Code Playgroud)

会导致:

0 s
1 t
2 r
3 i
4 n
5 g    
Run Code Online (Sandbox Code Playgroud)