首先,我知道有更简单(更好)的方法来做这个,我对此很陌生。
当我运行这个时,它工作得很好,除了第一次计算Y时,它会加上2。如果我从y=-1开始,一切都会正确的。这是什么原因?

word=raw_input("Input your word>")
a=0
e=0
i=0
o=0
u=0
y=0

letternumber=len(word)
while letternumber>=0:
    letternumber=letternumber-1
    if word[int(letternumber)].lower() == "a":
        a=a+1
    elif word[int(letternumber)].lower() == "e":
        e=e+1
    elif word[int(letternumber)].lower() == "i":
        i=i+1
    elif word[int(letternumber)].lower() == "o":
        o=o+1
    elif word[int(letternumber)].lower() == "u":
        u=u+1
    elif word[int(letternumber)].lower() == "y":
        y=y+1
else:

    print str(a) + str(e) + str(i) + str(o) + str(u) + str(y)

最佳答案

你的while循环逻辑坏了。将letternumber>=0:更改为letternumber>0:,因为在循环中,在检查单词中的位置之前,您会减小letternumber。你会再次检查wordat-1或最后一个字母(因此以元音结尾的单词将被计算两次)

07-27 19:57