matguarana10 Postado Julho 14, 2022 Denunciar Share Postado Julho 14, 2022 txt = input("") a = txt.replace("a", "m") b = a.replace("b", "a") c = b.replace("c", "t") d = c.replace("d", "e") e = d.replace("e", "u") f = e.replace("f", "s") g = f.replace("g","!") print(g) O problema do código é que quando eu escrevo: "abcdefg", o programa me entrega "matuus", pois quando troca o "d" pelo "e" logo em seguida o "e" vira "u", alguém sabe uma solução para não ocorrer esse problema? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Reginaldo Ferrão Postado Julho 21, 2022 Denunciar Share Postado Julho 21, 2022 (editado) Boa noite Matguaraná10, É porque em d = c.replace("d", "e") você acabou por ter duas letras e. Em seguida converteu essas duas letras e em na letra u. Pode fazer o seguinte: txt = "abcdefg" a = txt.replace("a","m") b = a.replace("b","a") c = b.replace("c","t") d = c.replace("e", "u") e = d.replace("d", "e") f = e.replace("f", "s") g = f.replace("g", "!") print(g) # Ou então pode usar um código com o laço for e variáveis de alimentação: txt = "abcedfg" txt2 = "Mateus!" cont = 0 while cont < len(txt): txt = txt.replace(txt[cont], txt2[cont],-1 ) cont += 1 print(txt) # Novamente o problema dos dois "e" se repetiria. Mas corrigi trocando o "e"! e o "d" de lugar em "txt". Editado Julho 21, 2022 por Reginaldo Ferrão Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 hkotsubo Postado Julho 25, 2022 Denunciar Share Postado Julho 25, 2022 (editado) Se for para substituir apenas um caractere por outro, pode usar str.maketrans para criar uma tabela de tradução, e depois use o método translate para aplicá-la à sua string: table = str.maketrans('abcdefg', 'mateus!') x = 'abcdefg' print(x.translate(table)) # mateus! Outra opção é ter um dicionário que mapeia cada caractere para o que será substituído: chars = { 'a': 'm', 'b': 'a', 'c': 't', 'd': 'e', 'e': 'u', 'f': 's', 'g': '!' } x = 'abcdefg' # se existe no dicionário chars, substitui; senão, mantém o mesmo caractere print("".join([chars[c] if c in chars else c for c in x])) # outra opção: print("".join([chars.get(c, c) for c in x])) # chars.get(c, c) retorna a substituição, caso exista, ou o próprio caractere caso não exista no dicionário Editado Julho 25, 2022 por hkotsubo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
matguarana10
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.