在命令行中输入字符串时,为什么我的代码读入0个元音?

时间:2019-02-05 08:15:30

标签: python for-loop iterator

我坚持为什么我的代码不计算元音的数量(包括不区分大小写的字母),并打印一个句子,报告在单词“和”中发现的元音数量。

import sys

vowels = sys.argv[1]

count = 0 

for vowel in vowels:
   if(vowel =='a' or vowel == 'e' or vowel =='i' or vowel =='o' or vowel =='u' or vowel 
   =='A' or vowel =='E' or vowel =='I' or vowel =='O' or vowel =='U'):
      count += 1

if count == 0:
   print('There are 0 vowels in '.format(count))
elif count < 2:
   print('There is 1 vowel in '.format(count))
else:
   print('There are {} vowels'.format(count, vowels))

在我的终端机上:

用户$ python vowel_counter.py和

有0个元音

其中有0个元音

3 个答案:

答案 0 :(得分:2)

sys.argv是运行参数的列表,其中第一个元素始终是您的运行文件。因此,您无需遍历文本,而是遍历参数['vowel_counter.py','and']。

您应该执行以下操作:

vowels=sys.argv[1]

答案 1 :(得分:0)

代码的主要问题之一是缩进,根据您提供代码的方式,检查count的块在循环的每次迭代中运行。

第二,您没有输出要检查的单词,这可能表明您正在读取错误的参数。这是一些有效的代码-尽管像原始代码一样保存,但是有很多更好的方法可以执行此逻辑

import sys

vowels = sys.argv[1] 

count = 0 

for vowel in vowels:

   if(vowel =='a' or vowel =='i' or vowel =='o' or vowel =='u' or vowel 
   =='A' or vowel =='E' or vowel =='I' or vowel =='O' or vowel =='U'):

       count += 1

if count == 0:
  print('There are 0 vowels in {}'.format(vowels))
elif count < 2:
  print('There is 1 vowel in {}'.format(vowels))
else:
  print('There are {} vowels in {}'.format(count,vowels))

注意:您的支票中缺少vowel =='e'

答案 2 :(得分:-1)

以下内容将处理在命令行中传递的单个或多个参数。像python vowel_count.py foopython vowel_count.py foo bar

$ cat vowel_count.py
import sys
args = sys.argv[1:]
print(args)
count = 0
for arg in args: # handling multiple commandline args
    for char in arg:
        if char.lower() in ['a','e','i','o','u']:
            count += 1

print("The {} contains {} vowels".format(' ',join(args), count))