4
respostas

O código não funciona

Este é o código: 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(),)

Este é o erro que está aparecendo:

Traceback (most recent call last): File "operacoes.py", line 56, in from impressora import Impressora File "/home/cristhopher/Programação/Python/impressora.py", line 5 print '(', ^ SyntaxError: invalid syntax

4 respostas

Tente substituir o

print '(',

por

print('(')

Nas funções visita_subtracao e visita_soma

ficou 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(),)

porém dá o mesmo erro

Deivid, consegue postar o código inteiro aqui?

são meio que dois que se juntam pela classe import o primeiro é esse: class Subtracao(object):

def __init__(self, expressao_esquerda, expressao_direita):
    self.__expressao_esquerda = expressao_esquerda 
    self.__expressao_direita = expressao_direita

def avalia(self):
    return (self.__expressao_esquerda.avalia() 
        - self.__expressao_direita.avalia())

@property
def expressao_esquerda(self):
    return self.__expressao_esquerda

@property
def expressao_direita(self):
    return self.__expressao_direita

def aceita(self, visitor):
    visitor.visita_subtracao(self)

class Soma(object):

def __init__(self, expressao_esquerda, expressao_direita):
    self.__expressao_esquerda = expressao_esquerda 
    self.__expressao_direita = expressao_direita

def avalia(self):
    return (self.__expressao_esquerda.avalia() 
        + self.__expressao_direita.avalia())

def aceita(self, visitor):
    visitor.visita_soma(self)

@property
def expressao_esquerda(self):
    return self.__expressao_esquerda

@property
def expressao_direita(self):
    return self.__expressao_direita

class Numero(object):

def __init__(self, numero):
    self.__numero = numero

def avalia(self):
    return self.__numero

def aceita(self, visitor):
    visitor.visita_numero(self)

if name == 'main':

from impressora import Impressora

expressao_esquerda = Subtracao(Numero(10), Numero(5))
expressao_direita = Soma(Numero(2), Numero(10))
expressao_conta = Soma(expressao_esquerda, expressao_direita)

visitor = Impressora()
expressao_conta.aceita(visitor)

mas não está dando problema

E esse é o outro:

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(),)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software