2017-09-13 75 views
-1
i = input("Enter number",) 
for i in range(i): 
    i= i *(i+1) 
    print(i) 

我正嘗試使用上面的代碼爲用戶輸入的任何數字生成一個因子。我如何用上面的代碼實現這一點,而不使用python析因函數。我怎麼也可以用階乘函數來做到這一點?Python 3.5因子

+0

請創建一個[mcve]。通過樣品輸入,顯示實際的代碼和當前/期望的結果。 –

回答

1

您正在修改i而迭代它。你可以嘗試:

i = int(input("Enter number",)) 
f = 1 
for j in range(i): 
    f = f * (j+1) 

print(f) 
+0

它給出了錯誤消息:TypeError:'str'對象不能被解釋爲整數 –

+0

我在我的代碼中添加了輸入到int的轉換 – Harald

2

你可以做遞歸也以這種方式

def recur_factorial(n): 
    """Function to return the factorial 
    of a number using recursion""" 
    if n == 1: 
     return n 
    else: 
     return n*recur_factorial(n-1) 

print recur_factorial(5) 

您可以輸入從用戶在整數的形式,然後通過在階乘函數

0

雖然使用遞歸,你應該使用尾遞歸函數,如

def factorial2(x, fac): 
    if x == 1: 
    return fac 
    else: 
    return factorial2(x-1, x*fac) 

factorial2(value_here,1) 

您可以使用內置功能與簡單:

import math 
math.factorial(value_here) 
+0

不需要括號。 – miradulo

+0

是的,但我總是使用當我可以,也許它從數學,但我真的很喜歡事情 – zero

+0

當然,但它是不好的Python風格。 – miradulo

2

使用此功能math.factorial(value)python進口math庫。