在输入的第一个数字上卡住的Python程序



这是我迄今为止的代码。

word = input('Enter a word: ')   
count = 0
vowels = ['a' , 'e' , 'i' ,'o' , 'u']
for char in word:
    if char in vowels: 
        count += 1
while word != "":
  print(word + ' contains ' + str(count) + ' vowel.')
  word = input('Enter a word: ') 
if not word:
  print("")
elif count == 1:
  print(word + ' contains ' + str(count) + ' vowel.') 
elif count > 1:
  print(word + ' contains ' + str(count) + ' vowels.')
elif count < 1:
  print(word + ' contains ' + str(count) + ' vowels.')  

它应该向用户询问一个单词,然后打印出这个单词有多少个小写元音,并不断询问一个词,直到输入为空白。

我有一个循环,但当它第一次问你,说你对"BOO"时,它会说BOO包含2个元音,然后你输入的每一个单词都有2个元音。我想你可以说它卡住了。

以下是的示例

Enter a word: hello
hello contains 2 vowels.
Enter a word: me
me contains 2 vowels.
Enter a word: tomorrow
tomorrow contains 2 vowels.
Enter a word: 

有人能告诉我出了什么问题,以及如何解决吗?

在每次循环迭代时,必须将0分配给count变量,否则将使用旧输入单词中的值。之后,你还需要再次计算新单词中元音的数量。

像这样:

vowels = ['a' , 'e' , 'i' ,'o' , 'u']
word = input('Enter a word: ') 
while word != "":
        count = 0
        for char in word:
            if char in vowels: 
                count += 1
        print(word + ' contains ' + str(count) + ' vowel.')
        word = input('Enter a word: ') 

您需要将循环移动到每个字符上,以便在获得新输入的循环中。

for char in word:
    if char in vowels: 
        count += 1

在进入while循环之前完成。在循环中,您永远不会重置count。为了获得预期的结果,可以将for循环移到while中,也可以将其封装在函数中,每次调用它。

最新更新