if num < 0:
input('Only nonnegative intergervalues allowed, try again: ')
elif num == 0:
print('The factorial of 0 = 1')
while num > 1:
factor = factor * num
num = num -1
else:
num = int(input('Only nonnegative intergervalues allowed, try again: '))
这就是我所拥有的。我只是想在程序中使用 while 循环。如果整数为负数,它会提示用户两次,然后循环中断。我需要循环不断提示用户,直到给出正确的输入。我不确定错误在哪里。我需要一个嵌套的 while 循环还是 else 语句有问题?
我在原始循环下面尝试了另一个 while 循环,但不确定是否正确完成。还尝试过移动一些东西?
部分问题在于您对
else
循环上的 while
的解释。它只会执行一次,因为 while 循环退出时没有 break
。我认为您的期望是在 else 块之后,将再次评估 while 条件。情况并非如此,请在 while 循环中使用 if
语句来代替。
您可能想要类似的东西:
# since Python does not have a repeat .. until loop, while True with a break works
while True:
num = int(input('Enter a non-negative integer value: '))
if num < 0:
input('Only non-negative integer values allowed, try again: ')
else:
break
factorial = 1
x = num # save num to print later
while x > 0:
factorial = factorial * x
x = x - 1
print(f'The factorial of {num} is: {factorial}')