在 while 循环中提示用户输入直到正确为止存在问题

问题描述 投票:0回答:1
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 循环,但不确定是否正确完成。还尝试过移动一些东西?

python factorial
1个回答
0
投票

部分问题在于您对

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}')
© www.soinside.com 2019 - 2024. All rights reserved.