Todavía soy nuevo en Python y acabo de comenzar a aprender. La tarea dada es encontrar la cantidad de puntuación, vocales y constantes en un texto dado. Pero cada vez que ejecuto el código, solo me da un 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
0
ɐuǝllǝ nl 25 ago. 2020 a las 23:28

4 respuestas

La mejor respuesta

El retorno debe estar fuera del ciclo.

Debería ser :

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)
0
Pygirl 25 ago. 2020 a las 20:35

Cuando el programa llega a regresar, sale del bucle.

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

Salida:

count: 4, count2: 4, count3: 7
1
Meysam 25 ago. 2020 a las 20:41

Está utilizando la palabra clave return, es decir, todo el código siguiente no se ejecutará y la función devolverá la variable count.

Por favor, verifique esto.

0
José Braz 25 ago. 2020 a las 20:36

Está devolviendo valor después de verificar la puntuación, el resto se ignora. Entonces obtienes 0. Tu código es válido para la verificación de puntuación.

1
Md. Ashraful Alam 25 ago. 2020 a las 20:33