В моем коде Python, когда пользовательский ввод равен 0, функция loop_until_valid () ждет, пока пользователь не передаст другой ввод - PullRequest
0 голосов
/ 06 ноября 2019

В моей домашней работе меня попросили написать программу принятия решений на Python, которая сообщает пользователю его оценку на основе оценки от 0 до 100. Я добавил проверку числа и проверку диапазона, которая запрашивает ввод до тех пор, покаПользователь вводит значение, которое удовлетворяет обоим условиям.

Я пытался напечатать приведение всех переменных в моих функциях main () и loop_until_valid () к int () и float () с одним и тем же результатом программыпауза, пока не появится какая-либо запись, кроме «0». Я попытался использовать глобальную переменную в функции check_if_valid () и main (), но мне не удалось проанализировать оба условия, которые проверяют, чтобы убедиться, что ввод является числом, и что число включает диапазон от 0 до 100. Я могускажите, что код в моей функции loop_until_valid () останавливается.

0 не работает ...

def main():
    print("Please enter in a numeric value between 0 and 100 for a grade.")
    valid_val = loop_until_valid()
    pos_val = loop_until_pos(valid_val)
    print("The grade is {0}".format(retrieve_grade(pos_val)))
    return

def retrieve_grade(input):
    if input >= 90 and input <= 100:
        grade = 'A'
    elif input >= 80 and input < 90:
        grade = 'B'
    elif input >= 70 and input < 80:
        grade = 'C'
    elif input >= 60 and input < 70:
        grade = 'D'
    else:
        grade = 'F'
    return grade

def check_if_valid():
    try:
        return int(float(input()))
    except ValueError:
        print("That is not a number. Please try again.")
    return

def loop_until_valid():
    valid_check = check_if_valid()
    while not valid_check:
        valid_check = check_if_valid()
    else:
        return valid_check

def loop_until_pos(input):
    while input < 0 or input > 100:
        print("Only numbers between 0 and 100 can be accepted. Please try again.")
        input = loop_until_valid()
    else:
        return input

main()

Для ввода 0 я ожидал, что он вернется "ОценкаF». Вместо этого программа делает паузу. Если 0 не работал как ввод, я ожидал, что он, по крайней мере, выдаст мне ошибку или скажет мне неправильную оценку, но ничего не изменится, пока я не введу больше данных в программу.

...