元音检查器总是返回零而不是元音计数

时间:2017-09-23 19:38:44

标签: python python-3.x debugging

这个程序是一个元音检查器,接受来自命令行的参数,但它不能正常工作。为什么计数总是返回0?这有什么不对?

import sys

string = sys.argv[1:]

def is_vowel(c):
    vowel = (c == 'a' or c == 'e' or c == 'i' or c == 'o' or c == 'u' or c == 'y')
    return vowel



def count_vowels(string): 
    count = 0
    for v in string: 
        if is_vowel(v) == True:
            count += 1 
    return count

print(count_vowels(string))

编辑:当我将string = sys.argv [1:]更改为string = sys.argv [1]

时,我发现该程序有效

有人可以解释为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

stringlist,因为您将其设置为sys.argv[1:] argv。因此,当您遍历string时,实际上是在迭代其元素而不是实际的str

如果您想进行多项输入,可以尝试:

for i in sys.argv[1:]:
  print(count_vowels(i))

答案 1 :(得分:0)

这将有效

 string = sys.argv[1:]



def is_vowel(c):
    vowel = (c == 'a' or c == 'e' or c == 'i' or c == 'o' or c == 'u' or c == 'y')
    return vowel



def count_vowels(string): 
    count = 0
    for v in string: 
        if is_vowel(v) == True:
            count += 1 
    return count

for i in string:
    print(count_vowels(i))