EP4 - Se o usuário digitar uma letra

EP4 - Se o usuário digitar uma letra

por Vanessa Araujo Rodrigues -
Número de respostas: 12

O que o programa deve fazer se o usuário digitar outra coisa que não um número inteiro ou 'q'?

Em resposta à Vanessa Araujo Rodrigues

Re: EP4 - Se o usuário digitar uma letra

por José Coelho de Pina -

Oi Vanessa,

O que o programa deve fazer se o usuário digitar outra coisa que não um número inteiro ou 'q'?

Se o programa explodir, tudo bem.

Veja o item 9 em Instruções para entrega de EPs.

 

Em resposta à José Coelho de Pina

Re: EP4 - Se o usuário digitar uma letra

por Bruna Thalenberg -

Oi, professor,

se bem entendi, recebi um desconto justamente por isso:

Teste do programa: função main()
ERRO: seu programa não executa com a entrada: [' \nq\n']
Traceback (most recent call last):
File __ep.py", line 186, in 
main()
File "__ep.py", line 62, in main
if int(comando) == 0:
ValueError: invalid literal for int() with base 10: ' '

Tente melhorar o seu programa para que ele ignore entradas inválidas - desconto: 0.5
"

O programa pode explodir ou não?!

 

Em resposta à Bruna Thalenberg

Re: EP4 - Se o usuário digitar uma letra

por Carlos Hitoshi Morimoto -

O programa pode explodir ou não?!

Sim, para o EP4 pode. Mas o corretor automático não gosta disso, pois ele foi feito para ser 'genérico' sorriso

 

A gente vai ensinar o corretor a tratar melhor esse caso, ou seja, você pode deixar o seu EP4 explodir para entradas inválidas que, na 2a correção, não haverá descontos

Mas não deixar explodir é uma boa prática de programação, alguém saberia me dizer como a gente faz isso?

 

Em resposta à Carlos Hitoshi Morimoto

Re: EP4 - Se o usuário digitar uma letra

por Vanessa Araujo Rodrigues -

Para não explodir, é só o programa só começar quando a entrada for válida sorriso Agora fazer o programa ler a string '\n1\n2\nq' não é tão trivial... triste

 

Em resposta à Vanessa Araujo Rodrigues

Re: EP4 - Se o usuário digitar uma letra

por José Coelho de Pina -

Agora fazer o programa ler a string '\n1\n2\nq\n' não é tão trivial...

'\n' significa Tecle ENTER ('\n' = ENTER):


régua >>> 
Digite
   'q' para encerrar a execução ou
   um inteiro n para imprimir a régua de ordem n.
régua >>> 1
.
. -
.
régua >>> 2
.
. -
. --
. -
.
régua >>> q
Fui!
Em resposta à José Coelho de Pina

Re: EP4 - Se o usuário digitar uma letra

por Guilherme Magalhães -

E o programa deve manipular entradas com mais de um número ou q?

ERRO: seu programa não executa com a entrada: [' \nq\n']

Trace
Tente melhorar o seu programa para que ele ignore entradas inválidas - desconto: 0.5
Resultado differente (92) do esperado para a entrada: ['0\nq\n']
- erro em teste com entrada = 0 - desconto: 0.5
Resultado differente (92) do esperado para a entrada: ['1\n2\nq\n']
- erro em teste com duas entradas: 1, 2, q - desconto: 0.7
Resultado differente (92) do esperado para a entrada: ['3\n4\n5\nq\n']
- erro em teste com três entradas: 3, 4, 5, q - desconto: 0.7

Em resposta à Guilherme Magalhães

Re: EP4 - Se o usuário digitar uma letra

por Carlos Hitoshi Morimoto -

E o programa deve manipular entradas com mais de um número ou q?

Sobre as entradas inválidas, foi respondido anteriormente.

Sobre  "manipular entradas com mais de um número", a reposta é sim. Para entender a entrada: ['3\n4\n5\nq\n'] basta ler um '\n' como ENTER. Assim, esse teste tem como entrada o 3, depois 4, depois 5 depois q. 

Um problema de corrigir automaticamente é que alguns EPs imprimem mensagens inesperadas e a "sujeira" acaba escondendo os resutlados do corretor. Esse deve ser o motivo para que os resultados tenham sido considerados diferentes do esperado. Para corrigir esse problema, modifique o EP para que ele imprima as mensagens da mesma forma que os exemplos do enunciado (função main()).

 

 

 

Em resposta à Carlos Hitoshi Morimoto

Re: EP4 - Se o usuário digitar uma letra

por Bruna Thalenberg -

Professor, o output de ['1\n2\nq\n'] deve ser então a régua de 1  e a régua de 2, seguidas,

e.g.:

régua >>> 1\n2
.
. -
.
.
. -
. --
. -
.
régua >>>


ou algo deve ser impresso entre as duas?

Em resposta à Bruna Thalenberg

Re: EP4 - Se o usuário digitar uma letra

por José Coelho de Pina -

o output de ['1\n2\nq\n'] deve ser então a régua de 1  e a régua de 2, seguidas,

Você deve digitar 1 seguido de ENTER.
Depois 2 seguido de ENTER.
Finalmente, q seguido de ENTER.
Veja o resultado a seguir onde os valores em vermelho foram digitados e seguidos de ENTER.


régua >>> 1
.
. -
.
régua >>> 2
.
. -
. --
. -
.
régua >>> q
Fui!
Em resposta à Carlos Hitoshi Morimoto

Re: EP4 - Se o usuário digitar uma letra

por Elton Okawa -

Professor, eu também tive os mesmos descontos no meu ep, mas a saída está igual a do main do enunciado, até mesmo com a mensagem "Fui!' no final. Não entendi o porquê do desconto.

Em resposta à José Coelho de Pina

Re: EP4 - Se o usuário digitar uma letra

por Vanessa Araujo Rodrigues -

Mesmo problema aqui... Não era para o usuário digitar um inteiro OU q? 

É para programar de modo que o usuário possa fazer múltiplas entradas?

Não entendi... triste