EP6- Testes secretos

EP6- Testes secretos

por Pedro Felipe Higa Felizatto -
Número de respostas: 12

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

 

Em resposta à Pedro Felipe Higa Felizatto

Re: EP6- Testes secretos

por Pedro Felipe Higa Felizatto -

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

Anexo go_crazy.png
Em resposta à Pedro Felipe Higa Felizatto

Re: EP6- Testes secretos

por João Henrique Luciano -

Olar!

 

Esses testes que você fez são muito bons, parabéns sorriso

Mas... você fez mais testes com relação à atribuição de valores às variáveis? Existe mais de 1 forma de realizá-la. piscando

Em resposta à Pedro Felipe Higa Felizatto

Re: EP6- Testes secretos

por Nivaldo da Silva Melo Neto -

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



Em resposta à Pedro Felipe Higa Felizatto

Re: EP6- Testes secretos

por Michel Viana Smykalla -

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á ^^

Em resposta à Michel Viana Smykalla

Re: EP6- Testes secretos

por Mateus Miron -

Pessoal. Tentaram operadores juntos?

Em resposta à Mateus Miron

Re: EP6- Testes secretos

por Michel Viana Smykalla -

Opa, eae galera 

O ep deu bom maneiro

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)
[]
>>>

Em resposta à Michel Viana Smykalla

Re: EP6- Testes secretos

por Pedro Felipe Higa Felizatto -

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á 

 

 

Em resposta à Pedro Felipe Higa Felizatto

Re: EP6- Testes secretos

por Michel Viana Smykalla -

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.

Em resposta à Pedro Felipe Higa Felizatto

Re: EP6- Testes secretos

por Vitor Hugo Vieira de Lima -

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??