1
resposta

Como fazer meu programa case insensitive?

O programa é tipo um proto editor de texto com algumas funções, como 'delete', 'invert', 'replace' e 'quit'. O usuário digita o texto depois um comando, a letra inicial em maiúscula de cada função, depois digita o que quer ser deletado ou invertido ou trocado e é nesse ponto que o programa tem que ser case insensitive, por exemplo: o texto é : "oi TuDo bem?" e ele quer deletar o "tudo", então ele coloca o comando "D" e digita "tudo" e a saída deve ser "oi bem?", se ele colocar o comando "I" e digitar "tudo" deve sair "oi oDuT bem?" e assim por diante, ou seja, o programa deve achar a palavra que será alterada independente de como ela é escrita pelo usuário. Se alguém puder me ajudar agradeceria bastante.

texto     = input()
comando   = ""
invertido = ""
di        = ""
print(texto)
while(comando == comando):
    comando = input()
    if(comando == "D"):
        deletado  = input()
        deletado1 = deletado + ","
        deletado2 = deletado + "."
        deletado3 = deletado + "?"
        deletado4 = deletado + "!"
        deletado5 = deletado + ":"
        while (deletado1 in texto):
            texto = texto.replace(deletado1, "")
        while (deletado2 in texto):
            texto = texto.replace(deletado2, "")
        while (deletado3 in texto):
            texto = texto.replace(deletado3, "")
        while (deletado4 in texto):
            texto = texto.replace(deletado4, "")
        while (deletado5 in texto):
            texto = texto.replace(deletado5, "")
        while (deletado in texto):
            texto = texto.replace(deletado, "")
        l = texto.split()
        for i in range(len(l)-1):
            l[i] = l[i]+" "
        texto = di.join(l)
        print(texto)
    if(comando == "I"):
        invertido = input()
        inverso   = ""
        for x in invertido:
            inverso = x + inverso
        texto = inverso.join(texto.split(invertido))
        print(texto)
    if(comando == "R"):
        substituido = input()
        substituidor = input()
        texto = texto.replace(substituido, substituidor)
        print(texto)
    if(comando == "Q"):
        print(texto)
        break
1 resposta

Bom dia Matheus!

Creio que a melhor solução para você seja utilizar Expressões Regulares (regex).

Acho que dá para diminuir bastante esse trecho de código:

if(comando == "D"):
        deletado  = input()
        deletado1 = deletado + ","
        deletado2 = deletado + "."
        deletado3 = deletado + "?"
        deletado4 = deletado + "!"
        deletado5 = deletado + ":"
        while (deletado1 in texto):
            texto = texto.replace(deletado1, "")
        while (deletado2 in texto):
            texto = texto.replace(deletado2, "")
        while (deletado3 in texto):
            texto = texto.replace(deletado3, "")
        while (deletado4 in texto):
            texto = texto.replace(deletado4, "")
        while (deletado5 in texto):
            texto = texto.replace(deletado5, "")
        while (deletado in texto):
            texto = texto.replace(deletado, "")
        l = texto.split()
        for i in range(len(l)-1):
            l[i] = l[i]+" "
        texto = di.join(l)
        print(texto)