Python controle de entrada de loop

0

Pergunta

Python novato aqui. Prática de usuário de controle de entrada. Tentando fazer o usuário loop de entrada para o início, se qualquer coisa, mas um número inteiro entre 1 e 10 é usado. Foi tentando por horas, tentou usar a Tentar Exceto comandos, mas não podia fazê-lo corretamente. O que estou fazendo de errado? Obrigado.

Editar: Muito obrigado por sua ajuda a todos, no entanto, o problema ainda não resolvido (mas muito perto!) Eu estou tentando descobrir como laço volta para o início, se qualquer coisa, MAS um número inteiro é escrito. Agente de Biscoito (acima) deu uma grande resposta para flutuante números, mas qualquer palavra ou letra que é digitado ainda produz um erro. Estou tentando entender como loop quando qualquer coisa aleatória (exceto números inteiros entre 1 e 10) é digitado. Nenhum dos exemplos acima produzidos corrcct resultados. Obrigado por sua ajuda

while True:
    print("Enter a number between 1 and 10")
    number = int(input())
    if (number > 0) and (number < 10):
        print("Thank you, the end.")
        break
    else number != (> 0 and < 10):
        print("It has to be a whole number between 1 and 10.")
        print("Please try again:")
controls input loops python
2021-11-15 08:25:06
3
0

Eu identifiquei alguns problemas.

Primeiro, a declaração de entrada que você está usando só iria gerar um erro se um valor de ponto flutuante é introduzido, porque o int no início exige que todos os elementos de entrada para um número, e . não é um número.

Segundo; a sua instrução else. else é apenas a esquerda, como else:e não leva argumentos ou parâmetros depois.

Agora, como verificar se o número não for inteiro? Tente isso:

while True:
    print("Enter a number between 1 and 10")
    number = float(input())
    if (number > 0) and (number < 10) and (round(number)==number):
        print("Thank you, the end.")
        break
    else:
        print("It has to be a whole number between 1 and 10.")
        print("Please try again:")

Este aceita um valor float, mas só aceita se for igual a um número inteiro, daí o (round(number)==number).

Espero que responde a sua pergunta.

2021-11-15 08:32:00
0

Primeiro de tudo, você não pode usar uma condição em uma else instrução. Além disso, você precisa usar or operador em vez de and se uma das condições é aceitável.
Assim, o código deve estar assim

while True:
    print("Enter a number between 1 and 10")
    number = int(input())
    if (number > 0) and (number < 10):
        print("Thank you, the end.")
        break
    elif number < 0 or number >10:
        print("It has to be a whole number between 1 and 10.")
        print("Please try again:")
2021-11-15 08:32:15
0

Graças a ack (acima) para me apontar para um link útil. Estudando outro thread, eu encontrei a solução. Ele pode não ser perfeito código, mas funciona a 100%:

while True:
    try:
        print("Enter a number between 1 and 10")
        number = float(input())
        if (number > 0) and (number < 10) and (round(number)==number):
            print("Thank you, the end.")
            break
        else:
            print("\n")
            print("It has to be a whole number between 1 and 10.")
            print("Please try again:")
            print("\n")
            continue
    except ValueError:
        print("It has to be a whole number between 1 and 10.")
        print("Please try again:")
        print("\n")
2021-11-16 06:21:03

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................