2013-10-01 126 views
0

傍晚,創建蟒蛇因子

我是python學生介紹有一些麻煩。 我想做一個python析因程序。它應該提示用戶輸入n,然後計算n的階乘,除非用戶輸入-1。我很困難,而教授建議我們使用while循環。我知道我甚至沒有進入'if -1'的情況。不知道如何通過公然使用math.factorial函數來獲得python來計算階乘。

import math 

num = 1 
n = int(input("Enter n: ")) 

while n >= 1: 
    num *= n 

print(num) 
+1

看起來你幾乎在那裏,我只是把它一行一行。 – Nicole

+0

只是在while循環內嘗試一些打印語句,看看發生了什麼.. –

回答

4

在學校的「經典」的階乘函數是一個遞歸定義:

def fact(n): 
    rtr=1 if n<=1 else n*fact(n-1) 
    return rtr 

n = int(input("Enter n: ")) 
print fact(n) 

如果你只是想辦法解決你的:

num = 1 
n = int(input("Enter n: ")) 

while n > 1: 
    num *= n 
    n-=1  # need to reduce the value of 'n' or the loop will not exit 

print num 

如果你想爲一個測試小於1的數字:

num = 1 
n = int(input("Enter n: ")) 

n=1 if n<1 else n # n will be 1 or more... 
while n >= 1: 
    num *= n 
    n-=1  # need to reduce the value of 'n' or the loop will not exit 

print num 

或者試驗N輸入後:

num = 1 
while True: 
    n = int(input("Enter n: ")) 
    if n>0: break 

while n >= 1: 
    num *= n 
    n-=1  # need to reduce the value of 'n' or the loop will not exit 

print num 

下面是使用reduce功能的方法:

>>> n=10 
>>> reduce(lambda x,y: x*y, range(1,n+1)) 
3628800 
+0

我們還沒有涵蓋定義我們自己的功能呢。 第二個代碼塊是它 - 我真的很接近,但不是那裏。我如何再次在打印語句中引用我的變量?是否有可能添加與while語句輸入-1的警告,或者我會需要if/then語句? ' NUM = 1 N = INT(輸入( 「輸入n: 」)) 而n> 1時: NUM * = N N- = 1張 打印(n「是「 的階乘」 「num) n = int(input(」Enter n:「)) ' – tcam23

+0

對不起,不知道如何在評論中添加中斷 – tcam23

+0

請原諒我,但這是非常可怕的python,特別是。如果n <1 else n'部分,則n = 1。 – georg

1

你實際上是非常接近的。只需更新每次迭代的值n

num = 1 
n = int(input("Enter n: ")) 

while n >= 1: 
    num *= n 
    # Update n 
    n -= 1 
print(num)