Нужна помощь! Пользовательский ввод строки, который считает гласные

#python #string #function #count

#python #строка #функция #подсчет

Вопрос:

Это школьное задание, которое ставит меня в тупик. Он должен включать основную функцию.

Напишите программу, которая предлагает пользователю ввести строку, затем отправляет строку в функцию с именем countVowels(stringToCheck), которая определяет количество гласных в строке и возвращает это значение.

 def main():
    print('This program will calculate the number of vowels in a string of characters.')
    stringInput = input('Enter a string: ')
    countVowels(stringInput)

def countVowels(stringToCheck):
    vowels = "aeiou"
    for currentChar in stringToCheck:
        if stringToCheck in vowels:
            count = 0
            count = count   1
        print('This string contains', count, 'vowels.')
    
main()
 

Комментарии:

1. пожалуйста, отформатируйте свой код как code (« вместо **)

2. В чем ваш вопрос? currentChar не используется. Вероятно, вам следует его использовать.

Ответ №1:

Я внес пару изменений в ваш код

  1. вы перебирали StringToCheck, поэтому он проверял, состоит ли вся строка из гласных, а не только из одного символа
  2. оператор print находился в цикле for, поэтому он выводил количество гласных для каждого цикла
  3. вы устанавливаете значение count равным 0 в каждом цикле, что сводит на нет точку подсчета
 
def main():
    print('This program will calculate the number of vowels in a string of characters.')
    stringInput = input('Enter a string: ')
    countVowels(stringInput)


def countVowels(stringToCheck):
    vowels = "aeiou"
    count = 0
    for currentChar in stringToCheck:
        if currentChar in vowels:
            count = count   1
    print('This string contains', count, 'vowels.')

main()

 

Комментарии:

1. Я изменил местоположение count = 0, как у вас здесь. Я никогда не публиковал здесь и случайно отрезал верхнюю часть, скажем, def main(): проблемы, с которыми я все еще сталкиваюсь, заключаются в том, что учитель требует для этого def main() . Он также хочет, чтобы вывод отображался следующим образом: «Строка содержит 3 гласных». Вместо этого мой выводится как «Эта строка содержит 1 гласную». и «Эта строка содержит 2 гласных». Когда ввод eerr по примеру

2. я добавил def main обратно после того, как увидел вашу правку. Повторная печать происходит потому, что у вас изначально был оператор print в цикле for (я просто изменил отступ для вас)

Ответ №2:

Я внес некоторые изменения в ваш код:

 count = 0
def main():
    print('This program will calculate the number of vowels in a string of characters.')
    stringInput = input('Enter a string: ')
    countVowels(stringInput)

def countVowels(stringToCheck):
        count = 0
        vowels = ["a", "e", "i", "o", "u"]
        for currentChar in stringToCheck:
            for CurrentElement in vowels:
                if currentChar == element:
                    count = count   1
        print('This string contains', count, 'vowels.')
    
main()
 

Давайте рассмотрим, что я сделал.

Сначала я изменил vowel переменную на список, поскольку таким образом проще и эффективнее хранить несколько значений. В функции countVowels() я добавил цикл for, чтобы проверить, находится ли значение currentChar в currentElement vowels переменной. Если это так, оно увеличивается count на единицу.

Я протестировал это, и это работает для меня.

Удачи!