В моей домашней работе меня попросили написать программу принятия решений на 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 не работал как ввод, я ожидал, что он, по крайней мере, выдаст мне ошибку или скажет мне неправильную оценку, но ничего не изменится, пока я не введу больше данных в программу.