簡體   English   中英

如何做階乘的for循環並獲得最終輸出

[英]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.

您的程序有些錯誤。

  1. 它使用N作為循環變量來覆蓋輸入。

  2. 循環的range不取決於輸入。

  3. 相乘的值始終為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM