Problem when typing str in Python

Asked

Viewed 94 times

7

I wrote that code:

while True:
    try:
        n1 = int(input('Digite o número 1/5: '))
    except ValueError as e:
        print("Digite um número:",)
        if ValueError:
            n1 = int(input('Digite o número 1/5: '))
    try:
        n2 = int(input('Digite o número 2/5: '))
    except ValueError as e:
        print("Digite um número:",)
        if ValueError:
            n2 = int(input('Digite o número 2/5: '))
    try:
        n3 = int(input('Digite o número 3/5: '))
    except ValueError as e:
        print("Digite um número:",)
        if ValueError:
            n3 = int(input('Digite o número 3/5: '))
    try:
        n4 = int(input('Digite o número 4/5: '))
    except ValueError as e:
        print("Digite um número:",)
        if ValueError:
            n4 = int(input('Digite o número 4/5: '))
    try:
        n5 = int(input('Digite o número 5/5: '))
    except ValueError as e:
        print("Digite um número:",)
        if ValueError:
            n5 = int(input('Digite o número 5/5: '))
    if n1 < n2 and n1 < n3 and n1 < n4 and n1 < n5:
        print('O menor número é: {}'.format(n1))
    elif n2 < n1 and n2 < n3 and n2 < n4 and n2 < n5:
        print('O menor número é: {}'.format(n2))
    elif n3 < n1 and n3 < n2 and n3 < n4 and n3 < n5:
        print('O menor número é: {}'.format(n3))
    elif n4 < n1 and n4 < n2 and n4 < n3 and n4 < n5:
        print('O menor número é: {}'.format(n4))
    elif n5 < n1 and n5 < n2 and n5 < n3 and n5 < n4:
        print('O menor número é: {}'.format(n5))
    if n1 < n2 < n3 < n4 < n5 :
        print('Está em ordem crescente')
        break
    else:
        print('Não está em ordem crescente')
    break

In the case when you type a string 1 time not from the problem, but when you type the string dnv from the error, Obs: I am training if anyone knows any exercises that can help also thank you.

2 answers

8

First, create a function to read numbers that insists until the user enters something valid:

def ler_numero(mensagem, tente_novamente = 'Isso daí não é um número. Tente novamente.'):
    while True:
        try:
            return int(input(mensagem))
        except ValueError as e:
            print(tente_novamente)

With that, it’s easier to do what you want:

while True:
    n1 = ler_numero('Digite o número 1/5: ')
    n2 = ler_numero('Digite o número 2/5: ')
    n3 = ler_numero('Digite o número 3/5: ')
    n4 = ler_numero('Digite o número 4/5: ')
    n5 = ler_numero('Digite o número 5/5: ')
    if n1 < n2 and n1 < n3 and n1 < n4 and n1 < n5:
        print('O menor número é: {}'.format(n1))
    elif n2 < n1 and n2 < n3 and n2 < n4 and n2 < n5:
        print('O menor número é: {}'.format(n2))
    elif n3 < n1 and n3 < n2 and n3 < n4 and n3 < n5:
        print('O menor número é: {}'.format(n3))
    elif n4 < n1 and n4 < n2 and n4 < n3 and n4 < n5:
        print('O menor número é: {}'.format(n4))
    elif n5 < n1 and n5 < n2 and n5 < n3 and n5 < n4:
        print('O menor número é: {}'.format(n5))
    if n1 < n2 < n3 < n4 < n5:
        print('Está em ordem crescente')
        break
    else:
        print('Não está em ordem crescente')
    break

3


# Checador de numeros
numeros = []     # -> Todos os números validos vão entrar nessa lista!
numero = 0
contagem = 0
while contagem != 5:
    try:
        numero = int(input(f"Digite um número: ({contagem + 1}/5) "))
        contagem += 1
        numeros.append(numero)
    except ValueError:
        print("Digite um número válido!")

n1 = numeros[0]
n2 = numeros[1]
n3 = numeros[2]
n4 = numeros[3]
n5 = numeros[4]

menor = n1  # O primeiro numero sempre será o menor no começo!

if n2 < menor:
    menor = n2
if n3 < menor:
    menor = n3
if n4 < menor:
    menor = n4
if n5 < menor:
    menor = n5

print(f"O numero menor foi: {menor}")

if n1 < n2 < n3 < n4 < n5:
    print("Os numeros estão em ordem!")
else:
    print("Os numeros não estão em ordem")
  • excellent, now it all makes sense :), had not thought of that possibility of putting all the numbers in a list.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.