如何使输出数字与阶乘结果匹配

How to make the output numbers match the factorial results

我接到了一项任务,要使用循环编写程序。用户输入 1-98 之间的数字,然后输出是该数字的阶乘。如果用户输入的不是上述数字,则要求用户重新输入适当的数字。现在,当用户输入适当时,出现的输出与阶乘结果不匹配。

here's the picture of that error

这是代码

num = int(input("Input Number (1-98) : "))

    Factorial = 1
    for a in range(1,num+1):
        if 0 < num < 99:
            Factorial = Factorial*a
        else :
            print("input does not match, Repeat input (1-98)")
            num = int(input("Input Number (1-98) :"))
    
    print ("The factorial of", num, "is", Factorial)

你能帮我解决这个问题吗?

您必须将输入部分计算部分

分开
num = -1
while not (0 < num < 99):
    num = int(input("Input Number (1-98) :"))

Factorial = 1
for a in range(1, num + 1):
    Factorial = Factorial * a

print("The factorial of", num, "is", Factorial)

原因是

  • 你输入了99
  • 循环运行所有值,计算阶乘直到 98
  • else"input does not match"
  • 循环是否结束,但你将计算的阶乘保存在内存中并从那里开始

先设置值不满足条件再重复询问直到输入满足条件:

num = 0
while num < 1 or num > 98:
    num = int(input("Input Number (1-98) : "))

factorial = 1
for a in range(1, num):
    factorial = factorial * (a+1)

print (f"The factorial of {num} is {factorial}")

那么就不需要乘以 1,所以我们从 1 开始,始终乘以 a+1(这样就避免了一次迭代)。 range(1..num) 生成从 1 到 num -1 的数字。因此,如果我们乘以 a+1,我们将有效地乘以 2 到 num 范围内的数字,这就是我们想要的。

最后是一种现代的字符串输出方式