2017-02-22 47 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循環。