使用while循环计算用户输入的阶乘

问题描述

我正在尝试制作计算用户输入数字阶乘的 while 循环。但是现在我的程序采用第一个输入数字的阶乘,并在计算下一个阶乘时使用该结果。关于如何修复它的任何想法?

这是我目前所拥有的:

factorial=1
n=1
while True:
    num=int(input("Enter number: "))
    if num<=0:
        print("Thank you!")
        break
    while n<num:
        n+=1
        factorial*=n
    print(factorial)

解决方法

factorialn 值不会在循环中重置为其默认值。它们存储前一次迭代的值并在当前迭代中使用它们。

您必须在 factorial 循环中包含 nwhile

while True:
    n = 1
    factorial = 1
    num=int(input("Enter number: "))
    if num<=0:
        print("Thank you!")
        break
    while n<num:
        n+=1
        factorial*=n
    print(factorial)
,

有很多方法可以做到,但要保持代码不变,您需要重置 factorialn 的值

factorial=1
n=1
while True:
    num=int(input("Enter number: "))
    if num<=0:
        print("Thank you!")
        break
    while n<num:
        n+=1
        factorial*=n
    print(factorial)
    # reset the values------------->>
    factorial=1
    n=1