階乗

2017-02-22 15 views
-2

みなさん、こんにちは、私は私のpython 3.xの中で行うことになっています宿題を持っている私が行う方法を見つけ出すのに苦労しています階乗

このように私はあなたのことができます願っていますこれについて私に説明してください。

通報

正の整数Nの階乗(書き込まれたNは!)1×2×3×... X nの積です。ユーザーに正の整数を入力するように求め、その数値の階乗を計算して表示するプログラムを作成します。プログラムには、入力が送信されるgetNという2つの関数が含まれ、入力が正の整数であることが保証されている必要があります。関数ファクトは、階乗値を計算する必要があります。プログラム(メイン)は階乗値を表示します。

これまでのところ私はそのはこのような何かを探すようになって信じて、この

#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'は、許容入力されています。 – mhawke

+3

は、特定の問題に対する回答を探すためのものです。このタイプのリクエストでは[code-review]がより適しています。 – 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

あなたは正しいです、私はそれを逃した。 – Marat

+0

も修正しました - 'main'に' n'パラメータを入れて 'getN'に渡す必要はありません – rsm

0

は、私には合理的なようです。実際の階乗計算を返却したり印刷したりしないようです。たぶん、あなたの関数 'fact'は "count count"を返しますか?さらに、fact関数で "if n == 0"をチェックする必要はありません。なぜなら、0の場合、whileループの条件のためにwhileループを終了させるからです。それは非負であり、 '1'である階乗だ -