es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función devuelve ‘None’ Python

Hola, estoy aprendiendo Python por mi cuenta.

Tarea:
Invertir palabras sin afectar los caracteres especiales

Ejemplo “abcd efgh” => “dcba hgfe”
Ejemplo “a1bcd efg!h” => “d1cba hgf!e”

Mi problema: la función devuelve None

Luego agregué esta línea:
return reverse_text pero aún devuelve None

¿Alguien puede mostrar dónde está mi error, por favor?

Mi código:

from string import punctuation
from string import digits

def reverse_text(str_smpl):
    sp = set.union(set(punctuation), set(digits))
    reverse_text.lst = []
    for word in str_smpl.split(' '):
        letters = [c for c in word if c not in sp]
        for c in word:
            if c not in sp:
                reverse_text.lst.append(letters.pop())
                continue
            else:
                reverse_text.lst.append(c)
        reverse_text.lst.append(' ')
    return reverse_text

if name == 'main':
    cases = [
        ("abcd efgh", "dcba hgfe"),
        ("a1bcd efg!h", "d1cba hgf!e"),
        ("", "")
    ]

for text, reversed_text in cases:
    assert reverse_text(str_smpl) == reversed_text

reverse_text(input('Input string '))
print("".join(reverse_text.lst))
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error está en la declaración de aserción dentro del bucle for para los casos. Estás utilizando el nombre de variable incorrecto “str_smpl” en lugar de “text”. Así que cambia “str_smpl” por “text” en la declaración de aserción:

    assert reverse_text(text) == reversed_text

    Además, en la declaración de retorno de la función reverse_text, estás retornando el nombre de la función en lugar de la lista de caracteres. Cambialo por:

    return ''.join(reverse_text.lst)

    Esto convertirá la lista de caracteres en un string y lo retornará.

Comments are closed.