Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

O Código não está funcionando corretamente

eu preciso fazer com que os prints continuem na mesma linha em vez de pular para a proxima linha, o professor ensinou desta forma

print'(',
#codigo omitido
print'+',
#codigo omitido
print')',
#e continua

no caso esta faltando os parenteses mas o problema é que eu estou utilizando a virgula como ele disse e os prints continuam indo pra proxima linha, eu ja tentei colocar a virgula de varias formas mas nao deu certo, o resultado era para ser por exemplo (10 + 10), mas para min esta virgula nao funciona e no console sai assim: ( 10 + 10 ) eu já procurei como faz isso aqui no forum e tambem na internet mas nao encontrei

meu codigo está assim

class Impressora(object):

    def visita_soma(self, soma):

        print('('),
        soma.expressao_esquerda.aceita(self)
        print("+"),
        soma.expressao_direita.aceita(self)
        print(")"),

    def visita_subtracao(self, subtracao):

        print("(",)
        subtracao.expressao_esquerda.aceita(self)
        print("-",)
        subtracao.expressao_direita.aceita(self)
        print(")",)

    def visita_numero(self, numero):

        print(numero.avalia())

o codigo funciona normalmente mas o resultado sai

(
(
10
-
5
)
+
(
2
+
10
)
)

em vez de ( (10 - 5) + (2 + 10) )

2 respostas

OBS: estou utilizando o Python 3.9.1, IDE PyCharm no Windows 10

solução!

Acabei de descobrir é só colocar end igual a uma string vazia end="" que funciona,



class Impressora(object):

    def visita_soma(self, soma):

        print('(', end="")
        soma.expressao_esquerda.aceita(self)
        print("+", end="")
        soma.expressao_direita.aceita(self)
        print(")", end="")

    def visita_subtracao(self, subtracao):

        print("(", end="")
        subtracao.expressao_esquerda.aceita(self)
        print("-", end="")
        subtracao.expressao_direita.aceita(self)
        print(")", end="")

    def visita_numero(self, numero):

        print(numero.avalia(), end="")

resultado

((10-5)+(2+10))