Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Como fazer o input do usuário só aceitar inteiros entre 1 e 10

Olá pessoal!!! não estou conseguindo fazer com que o input do usuário nesse código se limite a números inteiros e tem que ser entre 1 a 10. O código funciona porém aceitando decimais e números maiores que 10.

Segue o código:

# coding=utf-8

#escreva uma função que receba três parâmetros (a,b e c) inteiros e retorne o maior valor entre os argumentos passados

print("***********************")
print("*** Qual é o maior? ***")
print("***********************")

print("Escolha três números (a,b e c) do grupo abaixo:")
print('[1,2,3,4,5,6,7,8,9,10]')



numero_a = int(input("Escolha o número a: "))
numero_b = int(input("Escolha o número b: "))
numero_c = int(input("Escolha o número c: "))

if not 1 <= numero_a <= 10:
    print('O número deve ser entre 1 e 10')

if not 1 <= numero_b <= 10:
    print('O número deve ser entre 1 e 10')

if not 1 <= numero_c <= 10:
    print('O número deve ser entre 1 e 10')

maior_numero = numero_a

if(numero_b > maior_numero):
     maior_numero = numero_b
if(numero_c > maior_numero):
    maior_numero = numero_c

print('O maior número entre a, b e c é: ', maior_numero)

print("Fim")
9 respostas

Olá tubo bem contigo?

Acredito que você possa implementar um for ao receber os inputs para caso não for válido o input ele não grava a variável.

Tem algo parecido no jogo de adivinhar números inteiros da aula do Nico (alemão).

Atenciosamente

Roni Serra

Olá Roni! Eu tentei mas não estou conseguindo :(

Boa noite! Tente usar a estrutura de repetição while:


while numero_a < 1 or numero_a > 10:
    numero_a = raw_input("Escolha o número A: ")

não funcionou :(

solução!

Oi Nayma, tudo bem?

Tente o seguinte:

# coding=utf-8

#escreva uma função que receba três parâmetros (a,b e c) inteiros e retorne o maior valor entre os argumentos passados

print("***********************")
print("*** Qual é o maior? ***")
print("***********************")

print("Escolha três números (a,b e c) do grupo abaixo:")
print('[1,2,3,4,5,6,7,8,9,10]')


numero_a = int(input("Escolha o número a: "))
while numero_a < 1 or numero_a > 10:
    numero_a = int(input("Número digitado não está dentro dos limites.\nEscolha o número a: "))

numero_b = int(input("Escolha o número b: "))
while numero_b < 1 or numero_b > 10:
    numero_b = int(input("Número digitado não está dentro dos limites.\nEscolha o número b: "))

numero_c = int(input("Escolha o número c: "))
while numero_c < 1 or numero_c > 10:
    numero_c = int(input("Número digitado não está dentro dos limites.\nEscolha o número c: "))


maior_numero = numero_a

if(numero_b > maior_numero):
     maior_numero = numero_b
if(numero_c > maior_numero):
    maior_numero = numero_c

print('O maior número entre a, b e c é: ', maior_numero)

print("Fim")

Observe o seguinte trecho:

numero_a = int(input("Escolha o número a: "))
while numero_a < 1 or numero_a > 10:
    numero_a = int(input("Número digitado não está dentro dos limites.\nEscolha o número a: "))

O que fazemos é ler a entrada do usuário e caso o número informado não esteja dentro dos parâmetros, ou seja, caso ele seja menor que 1 ou maior que 10, repetimos(while) o procedimento para que o usuário digite o número até que ele seja válido. Pegou a ideia?

Resultado:

resultado

Qualquer dúvida é só falar. Abraços e bons estudos!

Oi Nádia!!!

Obaaaa o código agora não aceita mais números menores que 1 e maiores que 10 porém ele ainda aceita os decimais, o que pode ser feito?

por exemplo, quando digito: 1.5 ele aceita.

Nádia consegui!!!

Na linha : numero_a = int(input("Número digitado não está dentro dos limites.\nEscolha o número a: "))

eu mudei para: numero_a = raw_input("Número digitado não está dentro dos limites.\nEscolha o número a: ")

brigaduuuuuu

Nayma, para ele não aceitar números decimais você pode dizer que só aceita números inteiros no input, por exemplo:

numero_a = int(input("Escolha o número a: "))

Daí quando for digitar números decimais será gerado um erro dizendo que aquele número não é inteiro:

***********************
*** Qual é o maior? ***
***********************
Escolha três números (a,b e c) do grupo abaixo:
[1,2,3,4,5,6,7,8,9,10]
Escolha o número a: 1.5
Traceback (most recent call last):
  File "main.py", line 13, in <module>
    numero_a = int(input("Escolha o número a: "))
ValueError: invalid literal for int() with base 10: '1.5'

Nayma, o raw_input() é nativo do Python versão 2. Na versão 3 ele foi substituído pelo input(). Provavelmente você está executando seu código no Python 2, por isso das divergências.

Abraços e bons estudos!