Já como jogador, coloquei uma letra no campo de input de número e apareceu um erro na programação. Há alguma maneira de impedir os participantes do jogo de digitarem letras? Ou um aviso?
ValueError: invalid literal for int() with base 10: 't
Já como jogador, coloquei uma letra no campo de input de número e apareceu um erro na programação. Há alguma maneira de impedir os participantes do jogo de digitarem letras? Ou um aviso?
ValueError: invalid literal for int() with base 10: 't
E tem alguma forma de definir letra de forma geral? Ou tem que colocar letra por letra..a,b,c,d,e,f..etc...?
Há diversas formas de fazer o tratamento para este caso, mais vamos supor que queira fazer o mais simples utilizando listas, você pode criar uma lista com os números aceitos ou uma lista com as letras para verificação. Pra isso no input do programa seria mais indicado não converter direto para inteiro, para não dar erro logo de cara ( a não ser que fizesse um tratamento de erros com Except, mais no caso desse curso, ainda não é muito indicado, para que não se confunda durante o aprendizado).
Vamos supor que você coloque o input sem a conversão. Ficando dessa maneira:
numero = input('Digite um número: ')
Isso dentro do while, logo em seguida, você cria uma lista contendo as letras:
alfabeto = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
E faz a verificação se o caractere inserido contém na lista com o seguinte código, e caso não esteja na lista, ai sim você converte para inteiro, caso esteja na lista você coloca continue
, na qual irá voltar para o início do loop novamente. O tratamento do input seria mais ou menos assim:
if numero in alfabeto:
print('Digite apenas número!!')
continue
Na primeira linha está verificando se o input( que seria o numero) está na lista alfabeto, caso esteja, irá recomeçar o loop, o código completo desta parte seria assim, por exemplo:
while 1:
numero = input('Digite um número: ')
alfabeto = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
if numero in alfabeto:
print('Digite apenas número!!')
continue
numero = int(numero)
break # aqui não precisa ter o break, este break representa o resto dó código ou encerramento do loop.
# ---resto do código ---
Espero ter ajudado. Bons estudos :)