大家好,我有一个我应该在python 3.x中做的家庭作业
我正在努力弄清楚如何做到这一点,所以我希望你能向我解释如何解决这个问题。
正整数n(写入n!)的阶乘是乘积1 x 2 x 3 x ... x n。编写一个程序,要求用户输入一个正整数,然后计算并显示该数字的阶乘。该程序应包括两个函数:输入发送到的 getN ,并保证输入为正整数。函数 fact 应该计算析因值。然后程序(main)应显示阶乘值。
到目前为止,我有一个粗略的草图,我想如何去做这个
#This program will show the answer to a factorial after the user inputs a value.
def getN(n):
try:
n = int(input("Please enter a non-negative integer: "))
except n < 1:
print("You did not enter a value of 1 or greater.")
def fact(n):
count = 1
while n > 0:
count *= n
n -= 1
if n == 0:
break
def main(n):
n = int(input("Please enter a non-negative integer: "))
getN(n)
main(n)
我相信它应该看起来像这样。如果你能给我一些关于我应该做什么的反馈,那将是非常感激的。谢谢!
答案 0 :(得分:1)
请参阅内联评论
def getN():
try:
n = int(input("Please enter a non-negative integer: "))
if n < 1:
raise ValueError # it will be thrown also if input is not a valid int
except ValueError: # n < 1 is not an Exception type
print("You did not enter a value of 1 or greater.")
else:
return n
def fact(n):
count = 1
for i in range(1, n+1): # you see how simple it is with for loop?
count *= i
return count
def main():
n = getN() # before you were just asking n twice, never using fact()
print(fact(n))
main()
答案 1 :(得分:0)
对我来说似乎很合理。看起来你永远不会返回或打印实际的因子计算。也许你的功能'事实'应该“返回计数”?此外,您不需要在事实函数中检查“if n == 0”,因为如果它为0,则由于while循环的条件,它将结束while循环。