if 'exit'
возвращает True
, поскольку это непустая строка.
>>> bool('')
False
>>> bool('exit')
True
Это означает, что вы вызываете break
каждую отдельную итерацию, поскольку exit
всегда True
.
Другая проблема, которая также возникает у вас, по умолчанию input()
сохраняет значение string
В вашем случае вы пытаетесь вернуть как целые числа, так и строки.
В строке function(range(0,10)):
вы получите TypeError
.
test = '1'
test (диапазон (0,10))
Traceback (последний последний вызов): файл "", строка 1, в тесте (диапазон (0,10))
TypeError: объект 'str' не вызывается
Даже после исправления этого TypeError
вы получите возврат False
, так как string
не будет существовать в range()
ценность.
bool(test in range (0, 10))
#False
Мы можем решить эти проблемы, изменив код ниже, пожалуйста, обратитесь к комментариям для получения информации о том, что делает каждая строка.
run = True #We will run our loop based on the value of run
terminate = ['quit', 'exit'] #Prompt termination words
while run:
function = input(prompt)
# If the value stored in function is a NOT a digit Example: 'quit' AND the word exists in our terminate queries.
if function.isdigit() is False and function in terminate:
# Break the loop by setting run to False
run = False
# Else if, the valye stored in function IS a digit Example: '1' AND it is between 1-9
elif function.isdigit() and 9 >= int(function) > 0:
print(f"You entered {function}!")
else:
print("Invalid Answer, try again.")