首页 > 解决方案 > 如何检查重复的元音

问题描述

我对 python 很陌生,我的 if then else 语句有问题,我只得到“没有重复的元音”,这意味着我的 rep_vowel 仍然返回 0

所以程序规则如下。

如果没有元音出现在它自己旁边(例如你好),那么打印:

no vowel repeats

如果恰好一个元音按顺序重复至少一次(例如委员会),则打印一条消息,指示哪个元音重复:

only vowel e repeats

如果不止一个元音重复(例如绿色门),则打印:

more than one vowel repeats

忽略大写 - 小写差异:假设所有输入始终为小写

answer = input("Enter a string: ")
rep_vowel = 0
i = 0
length_Answer = len(answer)
next_string = 1
curChar = answer[0+rep_vowel]

for i in range(0,length_Answer):
    if answer[0 + i] in ["a","e","i","o","u"]:
    i =+ 1 
    next_string = answer[0+i+i]

    if next_string == answer:
        rep_vowel =+ 1

if rep_vowel == 0:
    print("no repeating vowles")
elif rep_vowel > 1:
    print("more than 1 repeating vowels")
else:
    print ("the letter "+ str(curChar) +" repeats")

标签: pythonpython-3.x

解决方案


你有一些错误,所以我会尝试解决其中的几个:

  1. 你做了很多[0 + something]索引,这是没用的,因为0 + something总是等于something,所以你应该只做索引[something]

  2. 更改iwith的值i += 1是不好的,因为您已经在循环中增加它

  3. 要找到匹配项,您只需将当前字母与下一个字母匹配,如果两者相同并且它们也是元音,则您已找到匹配项。

  4. 您正在初始化不必要的变量,例如i = 0仅在下一行中覆盖它们

将所有这些加在一起:

answer = input("Enter a string: ")
vowels = "aeiou"
repeats = [] # this list will hold all repeats of vowels

for i in range(len(answer) - 1): # i'll explain the -1 part at the end
    if answer[i] in vowels and answer[i] == answer[i + 1]:
        repeats.append(answer[i])

if len(repeats) == 0:
    print("no repeating vowles")
elif len(repeats) > 1:
    print("more than 1 repeating vowels")
else:
    print("the letter " + repeats[0] + " repeats")

这仍然没有考虑到所有可能的输入,但它应该让您开始最终解决方案(或者这可能就足够了)。例如,输入teest会给出正确的结果,但输入teeest不会(取决于您对正确的定义)。

关于len(answer-1)范围,这只是为了确保我们在执行 时不会超出范围answer[i + 1],因此我们将停在倒数第二个字母上。


推荐阅读