Почему мой код читается в 0 гласных при вводе строки в командной строке? - PullRequest
0 голосов
/ 05 февраля 2019

Я застрял на том, почему в моем коде не учитывается количество гласных, в том числе без учета регистра, и печатаю предложение с указанием количества гласных в словах 'и'.

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

В моем терминале:

user $ python vowel_counter.py и

В

* 1011 есть 0 гласных * В есть 0 гласных

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Следующая команда позаботится об одном или нескольких аргументах, передаваемых в командной строке.Как python vowel_count.py foo и python 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))
0 голосов
/ 05 февраля 2019

Одна из основных проблем с вашим кодом - это отступы. В зависимости от того, как вы представили код, блок, который проверяет 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' из вашего чека.

0 голосов
/ 05 февраля 2019

sys.argv - это список работающих аргументов, где первый элемент - это всегда ваш рабочий файл.следовательно, вы перебираете не текст, а аргументы ['vowel_counter.py', 'и'].

Вы должны сделать что-то вроде этого:

vowels=sys.argv[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...