para mi tarea en hackerrank, necesito escribir un programa que tome una cadena como entrada y devuelva esa cadena en orden atrasado y caracteres invertidos, eso significa que una entrada como "hELLO WORLD" debería regresar como "Hello World", hice todo lo cosas, pero cuando trato de ejecutarlo, se detiene en espacios, no sé cómo resolverlo.

def reverse(sentence):
mylist = []
splitted = sentence.split(" ")
for i in range(len(splitted)):
    mylist.append(splitted[-1])
    splitted.pop(-1)
    
for i in mylist:
    chars = []
    for char in i:
        if char.islower():
            char = char.upper()
            chars.append(char)
        elif char.isupper():
            char = char.lower()
            chars.append(char)
        else:
            char = char
            chars.append(char)
    print(chars)
    newmessage = ""
    for i in chars:
        newmessage += str(i)
    print(newmessage)

inversa("HolaMundo")

respuesta

puede verificar el caso de intercambio como comentó Chris Charley , pero si desea usar su código, puede omitir la división de la oración para conservar los espacios en blanco.

def reverse(sentence):
    # mylist = []
    # splitted = sentence.split(" ")
    # for i in range(len(splitted)):
    #     mylist.append(splitted[-1])
    #     splitted.pop(-1)

    chars = []
    for i in sentence:
        for char in i:
            if char.islower():
                char = char.upper()
                chars.append(char)
            elif char.isupper():
                char = char.lower()
                chars.append(char)
            else:
                char = char
                chars.append(char)
        # print(chars)
    newmessage = ""
    for i in chars:
        newmessage += str(i)
    print(newmessage)


reverse('hELLO wORLD')

producción:

Hello World
def reverse(sentence):
complete_string =""
mylist = []
splitted = sentence.split(" ")
for i in range(len(splitted)):
    mylist.append(splitted[-1])
    splitted.pop(-1)

print(mylist)
    
for x,i in enumerate(mylist):
    chars = []
    for char in i:
        if char.islower():
            char = char.upper()
            chars.append(char)
        elif char.isupper():
            char = char.lower()
            chars.append(char)
        else:
            char = char
            chars.append(char)
    print(chars)
    newmessage = ""
    for i in chars:
        newmessage += str(i)
    print(newmessage)
    if len(mylist)-x != 1:
        complete_string += newmessage + " "
    else:
        complete_string += newmessage
print(complete_string)

inversa("HOLA MUNDO")