元音索引:Python错误"'在<string>'中需要字符串作为左操作数,而不是int"

MLn*_*wby 2 python string for-loop

我是初学者,关于Python,我不太了解以下内容:

我尝试打印字符串中所有元音的索引:

string = "And now for something completely different"
vowel = "aeiouAEIOU"

for i in range(0, len(string)):
    if i in vowel:  
        print(string[i])
Run Code Online (Sandbox Code Playgroud)

所以,输出应该是这样的,我想:

[0, 5, 9, 13, 15, 18, 23, 27, 29, 34, 37, 39]
Run Code Online (Sandbox Code Playgroud)

然后我收到这个错误:

"'in <string>' requires string as left operand, not int"
Run Code Online (Sandbox Code Playgroud)

我想我明白我试图比较的两个变量都应该是字符串,但是我不知道'i'是不是一个字符串,因为它确实是'string'的每一个字母.

我该如何摆脱这个错误?也许我做错了,这就是为什么这段代码无效.

我试着看一下类似的问题,但答案并不完全符合我的问题,因此我仍然没有弄明白.

bru*_*ers 5

但我不知道'我'是不是一个字符串,因为它确实是'字符串'的每一个字母.

不,这i是一个从0到0的整数len(string) - 1.你可能只是看到了print荷兰国际集团i在循环...

如果你想迭代string字母,它拼写:

for char in string:
    print char
Run Code Online (Sandbox Code Playgroud)

现在,您需要索引(用于输出)和字母(用于查找),因此您应该使用enumerate(sequence)哪个(index, item)为每个项产生一个元组sequence:

for index, char in enumerate(string):
    if char in vowel:
        print index
Run Code Online (Sandbox Code Playgroud)

你也可以加速通过使查找vowels一个set:

vowels = set("aeiouAEIOU")
Run Code Online (Sandbox Code Playgroud)

这不会改变代码的其余部分,但查找将是O(1)而不是O(N)