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