Я пытаюсь использовать 'while true', чтобы попросить пользователя ввести 0 или положительное целое число. Я пробовал пару разных способов, и все они, кажется, имеют разные проблемы. Функция def positive_int отклоняет буквы и отрицательные числа, но не позволяет факториальной функции работать. Факториальная функция работает сама по себе. Я получаю код ошибки: TypeError: неподдерживаемые типы операндов для +: 'NoneType' и 'int' для этой строки для i в диапазоне (1, num + 1) :. Спасибо за помощь.
def positive_int(prompt=''):
while True:
try:
num = int(input(prompt))
if num < 0:
raise ValueError
break
except ValueError:
print("Please enter a positive integer.")
print('\n')
print("The program will compute and output the factorial number.")
def factorial():
num = positive_int('Please enter the number to factorial: ')
factorial = 1
if num == 0:
print("\nThe factorial of 0 is 1")
else:
for i in range(1,num + 1):
factorial = factorial*i
print("\nThe factorial of", num,"is",factorial)
factorial()