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