Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 元音检查器总是返回零而不是元音计数_Python_Python 3.x_Debugging - Fatal编程技术网

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

Python 元音检查器总是返回零而不是元音计数,python,python-3.x,debugging,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

这个程序是一个元音检查器,它接受来自命令行的参数,但它不能正常工作。为什么计数总是返回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]时,程序可以工作

有人能解释一下为什么会发生这种情况吗?

这会奏效的

 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))

string
是一个
列表
,因为您正在将其设置为
sys.argv[1://code>,它是
argv
的一部分。因此,当您迭代
字符串时,实际上是在迭代其元素,而不是实际的
str

如果要进行多个输入,可以尝试:

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

你能展示一下示例输入和输出吗
def is_元音(c):在set中返回c('aeiouAEIOU')
你应该考虑大写字母,或者在传递之前调用
string=string.lower()
。@KalyanReddy input-crazy,output-zero对于输入crazy,我得到了2作为答案@Linda AcquavivaI了解小写字母,但是,这一部分与我无关,请查看edit当您使用sys.argv[1:]时,您实际上返回的是一个列表而不是字符串。例如,我如何为程序指定两个单词?与其说是疯子,不如说是疯子,把它们写在引文里。你本可以恰当地提出这个问题的。不管怎样,我很高兴你的疑问得到了解决。谢谢你。那么,我如何才能给我的程序多个项目,而不是一个。我输入了您给我的内容,告诉我无效的syntaxI缺少冒号,抱歉@LindaAcquaviva