Python 元音检查器总是返回零而不是元音计数
这个程序是一个元音检查器,它接受来自命令行的参数,但它不能正常工作。为什么计数总是返回0?这里怎么了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
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