Olha só quem está aqui mais uma vez
Então, pessoas maravilhosas, estou novamente com problemas em testes secretos
Agora é no 39,41 e 42
Se alguém tem dicas de operações (e seus resultados), serei muito grato pela ajuda
Olha só quem está aqui mais uma vez
Então, pessoas maravilhosas, estou novamente com problemas em testes secretos
Agora é no 39,41 e 42
Se alguém tem dicas de operações (e seus resultados), serei muito grato pela ajuda
Mesma coisa, to avaliando aqui.
Olá pessoas
Eu já fiz o teste com as expressões:
((()))
(())))
(
)
(((0^((0^0)-1)+)3^(2*2)^0-3*(7))+((0^((0^0)-1)+)3^(2*2)^0-3*(7))+38)^(0-1) #resultado é 0.25
1(+)1
0/0
)2+2(
e nenhum desses é algum dos testes secretos 39,41 nem 42
Socorro preciso de uma luz
Olar!
Esses testes que você fez são muito bons, parabéns
Mas... você fez mais testes com relação à atribuição de valores às variáveis? Existe mais de 1 forma de realizá-la.
Opa, o pro teste 39 eu resolvi com a = b = c = d = 5
>>> from monty_python import Monty_Python
>>> texas = Monty_Python()
>>> lista_infixa = texas.lexer("a = b = c = d = 5")
>>> lista_posfixa = texas.para_posfixa(lista_infixa)
>>> for item in lista_posfixa: print(item)
...
'a' (<class 'str'>): VAR
'b' (<class 'str'>): VAR
'c' (<class 'str'>): VAR
'd' (<class 'str'>): VAR
5.0 (<class 'float'>): NUM
'=' (<class 'str'>): OP
'=' (<class 'str'>): OP
'=' (<class 'str'>): OP
'=' (<class 'str'>): OP
Aaaaaaaaaaaaa
Obrigado
Como agradecimento te proporciono o emoticon martin e ovo
Mais uma imagem de tiny snek
Estava com erro 39 e resolvi com essa dica também, obrigado !
E o teste 19 alguém já passou por ele? valeu!
Opa, oi gente.
Também estou com problemas nos testes 41 e 42, alguém tem algum teste para sugerir? estou sem ideias :/
Além disso, estou com uma dúvida sobre este exemplo do enunciado :
>>> lista_infixa = texas.lexer("valor = (12 + 3) * 5 + 14% 2 =")
>>> for item in lista_infixa: print(item)
'valor' (<class 'str'>): VAR
'=' (<class 'str'>): OP
'(' (<class 'str'>): BLC
12.0 (<class 'float'>): NUM
'+' (<class 'str'>): OP
3.0 (<class 'float'>): NUM
')' (<class 'str'>): BLC
'*' (<class 'str'>): OP
5.0 (<class 'float'>): NUM
'+' (<class 'str'>): OP
14.0 (<class 'float'>): NUM
'%' (<class 'str'>): OP
2.0 (<class 'float'>): NUM
'=' (<class 'str'>): OP
>>> lista_posfixa = texas.para_posfixa(lista_infixa)
>>> for item in lista_posfixa: print(item)
'valor' (<class 'str'>): VAR
12.0 (<class 'float'>): NUM
3.0 (<class 'float'>): NUM
'+' (<class 'str'>): OP
5.0 (<class 'float'>): NUM
'*' (<class 'str'>): OP
14.0 (<class 'float'>): NUM
2.0 (<class 'float'>): NUM
'%' (<class 'str'>): OP
'+' (<class 'str'>): OP
'=' (<class 'str'>): OP
'=' (<class 'str'>): OP
Note que, nesse caso, temos uma atribuição a mais do que deveria, o que, do meu ponto de vista, tornaria essa expressão incorreta. Segundo o enunciado, também, expressões incorretas devem retornar uma lista vazia .
Alguém poderia me explicar o por quê que essa expressão não está incorreta?
Aé, quando coloco para calcular essa expressão, acontece o seguinte :
texas = Monty_Python()
>>> texas.calcule("valor = (12 + 3) * 5 + 14% 2 =")
>>>
Obg desde já ^^
Pessoal. Tentaram operadores juntos?
Opa, eae galera
O ep deu bom
Segue alguns testes que me ajudaram :
>>> texas = Monty_Python()
>>> a = texas.lexer(" ( 2 + 2 =")
>>> texas.para_posfixa(a)
[]
>>> a = texas.lexer(" 2 + 2 ) =")
>>> texas.para_posfixa(a)
[]
>>>
Olar,
Acho que entendi (posso estar mais errado que antes) agora o que são os testes 41/42, no entanto tenho umas dúvidas ainda:
Se eu digitasse no unit_test() as seguintes expressões:
teste1: '(1+1'
teste2: '1+)1'
Se colocasse como a em para_posfixa(a):
teste3: a=texas.lexer('a=1+1=')
O que eu deveria receber? Não sei se no teste1 ou no teste2 devo receber 2 ou None, ou se no teste3 devo ter uma lista com os seguintes lexemas dos itens:'a',1,1,'+','=','=' pois para mim o teste3 não é um teste válido, no entanto é análogo à sua pergunta acima, e ficou em aberto o que deveria acontecer.
Acredito que não foi bem posicionado nesse EP o que é 'erro' em:
"Se for detectado algum erro na expressão infixa, o método deve retornar []."
'Erro' é erro de cálculo? o teste1 seria erro? O '=' no final é erro? Eu devo saber responder, sem ser None, à '1+(-1)', '1==2//2' ou '2+2=' ?
Esse '=' no final é como se eu quisesse que a calculadora me dissese algo? Como:
expr>>>2+2=
4
Gente to muito perdido desculpa todo esse blábláblá
Eae Pedro, de boa?
Eu estava com algumas dúvidas parecidas , e cheguei à algumas respostas :
Sobre o '=' no final, como, por exemplo, 'a=1+1=' , está correto, e o por quê é devido ao comportamento da calculadora. Se você colocar numa calculadora a expressão '2 =', ela retorna 2 e se , em seguida, você pressionar o botão '=', ela retorna 2 novamente. Parece que está errado, mas não, pois um número é igual a ele mesmo. Assim, a expressão 'a=1+1=' funciona mais ou menos da mesma forma, como se fosse " 'a' é igual a 1 + 1, que é 2, e 2 é igual a 2 ".
Em relação aos testes '(1+1' e '1+)1' no unit_test() deve retornar None, e no para_posfixa() uma lista vazia, por que, nesses casos, as expressões estão incorretas. Se você reparar no algoritmo fornecido para implementar o para_posfixa, quando detectado um dos parênteses, a existência do outro é necessária para o conclusão do algoritmo. Por exemplo, quando se detecta um abre parênteses, você deve colocar na pilha. Se não há nenhum fecha parênteses na expressão, o abre parênteses vai ficar na pilha, e você não deve incluir nenhum parênteses na lista de itens que o para_posfixa() retorna, ou seja, vai dá ruim em alguma parte ou o abre parênteses vai ser incluído na lista de itens. Outro exemplo seria a existência somente do fecha parênteses na expressão. O algoritmo manda retirar, quando encontra um fecha parênteses, todos os operadores da lista até aparecer um abre parênteses, mas, se não tem o abre parênteses, como faz? Entende?
Sobre o que o ep considera como expressão incorreta, acho que a base é se é possível calcular e não tem esses errinhos, como parênteses errados.
Não sei se deu pra entender, mas eu acho que é isso. Se alguém tiver outra resposta , ou quiser corrigir a minha, fique à vontade! Ajuda muito!
Valeu,
é nois.
Olá pessoa, Boa noite!
Olhei as sugestões de vocês para o teste secreto 41, mas não funcionaram no meu.
Eu estava tentando e me surgiu uma duvida, qual deve ser o retorno para testes do tipo 8^(-1)
o meu esta retornando None, mas acredito que o correto deva ser 0,125.
Qual o retorno de vocês para potências de expoente negativo??