Python 如何在字符串的奇数位置找到元音?

Python 如何在字符串的奇数位置找到元音?,python,Python,在我的代码中,我必须创建一个函数来计算字符串奇数位置的元音数 例如,以下内容将产生2的输出 st = "xxaeixxAU" res = countVowelsOdd(st) print (res) 在我的代码中,唯一的问题是如何告诉python计算奇数位置的元音 这可以在我的代码中的“if语句”的第二部分中找到,我试图通过将st[I]%2==1使索引变为奇数。我在尝试修复此问题时遇到各种类型的错误 你知道怎么解决这个问题吗 def countvuelsodd(st): 元音=“aeiouAE

在我的代码中,我必须创建一个函数来计算字符串奇数位置的元音数

例如,以下内容将产生2的输出

st = "xxaeixxAU"
res = countVowelsOdd(st)
print (res)
在我的代码中,唯一的问题是如何告诉python计算奇数位置的元音

这可以在我的代码中的“if语句”的第二部分中找到,我试图通过将
st[I]%2==1
使索引变为奇数。我在尝试修复此问题时遇到各种类型的错误

你知道怎么解决这个问题吗

def countvuelsodd(st):
元音=“aeiouAEIOU”
计数=0
对于i,ch-in枚举(st):
如果元音中的i和st[i]%2==1:
计数+=1
返回计数
i
是索引,您想要字母

if ch in vowels ...
既然你有了索引,那就是你找到的模

if ch in vowels and i % 2 == 1:

我不知道您的任务/项目是否禁止使用regex,但如果您愿意,这里有一个选项。我们可以首先替换正则表达式,从输入中删除所有偶数定位字符。然后,进行第二次替换以删除所有非元音字符。最后,剩下的是正确的元音计数

st = "xxaeixxAU"
st = re.sub(r'(.).', '\\1', st)
print(st)
st = re.sub(r'[^aeiou]', '', st, flags=re.IGNORECASE)
print(len(st))
这张照片是:

xaixU
3

enumerate
为您提供第一个参数
i
作为位置

def countvuelsodd(st):
元音=“aeiouAEIOU”
计数=0
对于i,ch-in枚举(st):
如果ch in元音和i%2==1:
计数+=1
返回计数

请看一下这个

In [1]: a = '01234567'                                                                    

In [2]: print(*(c for c in a[0::2]))                                                       
0 2 4 6

In [3]: print(*(c for c in a[1::2]))                                                      
1 3 5 7

In [4]: print(*(c in '12345' for c in a[1::2]))                                           
True True True False

In [5]: print(sum(c in '12345' for c in a[1::2]))                                         
3

这对你的问题有帮助吗?

没有,我已经完成了计算字符串中任何地方元音的部分。我需要第二部分的帮助,那就是计算字符串奇数位置的元音。因为
st[I]
是字符串中的一个字母(与
ch
相同),你找不到字母的模,所以“I”本身意味着字符串的任何数字/位置i是您分配给索引enumerate Returns的变量,这里的计数不应该是3,而不是2,因为
U
位于输入字符串末尾的第九位?请定义奇数(人员计数从1开始,Python计数从零开始),您要检查
ch
是否在
元音中
如果ch in元音
,而不是
如果i in元音
In [1]: a = '01234567'                                                                    

In [2]: print(*(c for c in a[0::2]))                                                       
0 2 4 6

In [3]: print(*(c for c in a[1::2]))                                                      
1 3 5 7

In [4]: print(*(c in '12345' for c in a[1::2]))                                           
True True True False

In [5]: print(sum(c in '12345' for c in a[1::2]))                                         
3