Ir para conteúdo
Fórum Script Brasil
  • 0

alguém me ajuda com a função replace.


matguarana10

Pergunta

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?
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

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 por Reginaldo Ferrão
Link para o comentário
Compartilhar em outros sites

  • 0

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 por hkotsubo
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...