Как использовать несколько условий в цикле for в функции?

#python #multiple-conditions

#python #множественные условия

Вопрос:

Я все еще новичок в python и только начал изучать. Поставленная задача состоит в том, чтобы найти количество знаков препинания, гласных и констант в данном тексте. Но всякий раз, когда я запускаю код, он просто выдает мне 0 .

 def getInfo(text):

    pun = [".", ",", " ", "'", """, "!"]
    vowels = ["a", "e", "i", "o", "u"]

    count = 0
    count2 = 0
    count3 = 0
    for char in text:
        if char in pun:
           count  = 1
        return count
    
        if char.lower() in vowels:
           count2  = 1
        return count2
        
        if (not char.lower() in vowels) and (not char.lower() in pun):      
            count3  = 1
        return count3
  

Ответ №1:

Вы перенастраиваете значение после проверки знаков препинания, остальные из них игнорируются. Итак, вы получаете 0. Ваш код допустим для проверки пунктуации.

Ответ №2:

Когда программа достигает возврата, она выходит из цикла.

 def getInfo(text):

    pun = [".", ",", " ", "'", '"', "!"]
    vowels = ["a", "e", "i", "o", "u"]

    count = 0
    count2 = 0
    count3 = 0
    for char in text:
        if char in pun:
            count  = 1

        if char.lower() in vowels:
            count2  = 1

        if (not char.lower() in vowels) and (not char.lower() in pun):
            count3  = 1
    return "count: {0}, count2: {1}, count3: {2}".format(count, count2, count3)

print(getInfo("We are in 2020."))
  

Вывод:

 count: 4, count2: 4, count3: 7
  

Ответ №3:

Возврат должен быть вне цикла.

Это должно быть :

 def getInfo(text):

    pun = [".", ",", " ", "'", """, "!"]
    vowels = ["a", "e", "i", "o", "u"]

    count = 0
    count2 = 0
    count3 = 0
    for char in list(text):
        if char in pun:
           count  = 1
   
        if char.lower() in vowels:
           count2  = 1
        
        if (not char.lower() in vowels) and (not char.lower() in pun):      
            count3  = 1
    return (count, count2, count3)

getInfo('myname.is hello world!')

# (4, 6, 12)
  

Ответ №4:

Вы используете return ключевое слово, то есть весь приведенный ниже код не будет выполняться, и функция вернет переменную count .

Пожалуйста, проверьте это.