我正在编写一个计算数字阶乘的程序,我能够显示正确的答案,但是与答案一起,我需要实际的计算才能显示,对此我遇到了麻烦。例如,当用户输入4时,我需要将其显示为:
我一直在尝试找出正确的代码,但不知道该怎么办。
这是我到目前为止的代码
number = int(input(“输入要采用阶乘的数字:”))
factorial = 1
for i in range(1, number + 1):
factorial = factorial * i
print (factorial)
现在,它显示正确的答案,但是我需要它包括以下等式:4! = 1 x 2 x 3 x 4 = 24
答案 0 :(得分:1)
最简单的方法是在迭代时构造字符串:
equation = str(number) + "! = "
factorial = 1
for i in range(1, number + 1):
factorial = factorial * i
equation += str(i) + "x"
equation = equation[:-1] + " = " + str(factorial)
print(equation)
请注意,此方法在最后一个因子后面附加了多余的“ x”。 equation[:-1]
将其删除。
或者,您可以将此单行解决方案附加到代码末尾。它使用字符串类的join方法来连接字符串数组:
print(str(number) + "! = " + "x".join(str(n) for n in range(1, number + 1)) + " = " + str(factorial))
答案 1 :(得分:0)
当您遍历要相乘的数字时,可以将每个数字的字符附加到包含等式(例如ans)的字符串中,最后打印出来。在代码末尾,我省略了最后一个字母,因为我不想显示额外的“ x”。
def fact(number):
num_string=str(number)
factorial = 1
ans=num_string+"!="
for i in range(1, number + 1):
factorial = factorial * i
ans+=str(i)+"x"
ans=ans[:-1]
print(ans)
return factorial
fact(4)
答案 2 :(得分:0)
您可以将每个值附加到列表中,然后使用f字符串打印方程式:
num = 5
l = []
f = 1
for i in range(1, num + 1):
f *= i
l.append(i)
print(f"{num}! = {' x '.join(map(str, l))} = {f}")
# 5! = 1 x 2 x 3 x 4 x 5 = 120