[EP1] Passando bizarrices como input do humano

[EP1] Passando bizarrices como input do humano

por Vitor Pereira da Silva -
Número de respostas: 1

Na especificação do EP, se exige comportamento similar ao do binário.

Porém no binário, passar coisas como "abc" "xuxa" não dão erro como jogada e ainda vira um número.

Mas usando int(...) do python, gera um erro no caso de entradas como essas?

Pode só ignorar a hipótese do jogador passar coisas que não sejam números, ou devemos emular a função atoi conforme usada no executável?

Em resposta à Vitor Pereira da Silva

Re: [EP1] Passando bizarrices como input do humano

por Marcelo Queiroz -

Oi, Vitor!

Sim, existe uma inconsistência no enunciado. Acho que isso foi mencionado na aula de hoje. Especificamente, a inconsistência é entre a frase "Seu programa em Python deve se comportar exatamente como o executável disponível no PACA" e as "Instruções para Entrega de EPs no PACA", cujo item 9 diz "O seu programa não precisa fazer consistência dos dados de entrada. Isto significa que se, por exemplo, o seu programa pede um número entre 0 e 5 e o usuário digita um número negativo, uma letra, um cifrão, uma arroba, ..., o seu programa pode travar o computador ou explodir sem ficar envergonhado." (Note entretanto que isso não se aplica aos asserts, que fazem verificação de consistência dos dados, mas estão especificados no enunciado).

Em particular, a leniência com que o executável trata as bizarrices na entrada não precisa ser replicada em Python. Mas para a cultura geral de vocês, sempre dá para testar se uma entrada é ou não um número inteiro, e decidir o que fazer se não for, por exemplo pedindo de novo:

x = input("Digite um número: ")
while not x.isdecimal():
    x = input("Digite um número: ")
x = int(x)
print("Até que enfim entendeu!")

Veremos mais sobre processamento de strings após a prova.

Abraços,

Marcelo