2017-02-22 50 views
-2

大家好我有我应该在Python 3.X做家庭作业阶乘使用两种功能的Python 3.x的

我在努力弄清楚如何做到这一点,所以我希望你能向我解释如何解决这个问题。

问题

的正整数n的阶乘(写为n!)是产品1×2×3×...×n个。编写一个程序,要求用户输入正整数,然后计算并显示该数字的阶乘。该程序应该包含两个功能:输入发送到的getN,并确保输入为正整数。函数事实应该计算阶乘值。程序(主)应该显示阶乘值。

到目前为止,我有我要如何去了解这个

#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

'0'是一个可接受的输入 - 它是非负的,它的阶乘是'1'。 – mhawke

+3

SO是为了寻求特定问题的答案。对于这种类型的请求[代码审查]更适合。 – Julien

+0

“我没做完我的作业”不是问题。 – TigerhawkT3

回答

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() 
+0

实际功能没有'return'。 – rsm

+0

@rsm你是对的,我错过了。固定 – Marat

+0

也 - 你不需要'main'中的'n'参数并将它传递给'getN' – rsm

0

对我来说似乎很合理。它看起来像你永远不会返回或打印实际的因子计算。也许你的功能'事实'应该“返回计数”?另外,你不需要在事实函数中检查“if n == 0”,因为如果它是0,由于while循环的条件,它将结束while循环。