[英]how to do a factorial for loop and get final output
# Get N from the command line
import sys
N = int(sys.argv[1])
for N in range(1,4):
N *= 4
print(N)
所以4! 是4*3*2*1 = 24
。
我的輸出只有16,它希望我輸出24
這可以找到從命令行輸入的數字的階乘:
# Get N from the command line
import sys
N = int(sys.argv[1])
for i in range(1, N):
N *= i
print(N)
# if input is 4, it outputs 24.
您的程序有些錯誤。
它使用N
作為循環變量來覆蓋輸入。
循環的range
不取決於輸入。
相乘的值始終為4
而不是在循環中從1
遞增到N
這是實現階乘的正確方法:
# Get N from the command line
import sys
n = int(sys.argv[1])
result = 1
for i in range(1, n + 1):
result *= i
print(result)
或者,使用math
標准庫。
import math
n = int(sys.argv[1])
result = math.factorial(n)
print(result)
我建議使用數學庫: https ://docs.python.org/3/library/math.html(cf math.factorial(x))
# Get N from the command line
from math import factorial
import sys
N = factorial(int(sys.argv[1]))
您從sys.argv查詢N
,然后在循環中將其覆蓋。 那是一個問題。
下一步:range(a,b)將創建一個從a到b-1的整數(假設stepsize為1)。 因此range(1,4)
將創建[1,2,3]
。
您的代碼執行以下操作:將N更改為1 * 4,然后更改為2 * 4,然后更改為3 * 4(即12,而不是16)。
如果要用困難的方式編碼階乘,則需要一個單獨的迭代器(通常表示為i
),並一路相乘最多N
次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.