階乗プログラムは複数の数値を出力します

私は Python を学んでいますが、階乗プログラムで立ち往生しています。1 行の出力ではなく、複数行の出力が得られます。

私が書いたプログラム

num = int (input ("Enter a number: "))
階乗 = 1

数値 == 0 の場合:
print ("0 の階乗は 1")
elif 番号 <0:
print ("エラー、負の数には階乗がありません")
そうしないと:
i の範囲 (2, num +1) の場合:
階乗 = 階乗 * i
print ("階乗は: ", factorial)

以下のように出力を取得します。

数字を入力してください: 4
階乗は: 2
階乗は: 6
階乗は: 24

1 行の回答を探していますが、複数の行が表示されます。理由がわかりません。

入力が 0 であることを明示的にテストする必要はありません。範囲を慎重に構築することで、正しい結果を得ることができます。

ループ内で中間値を出力しないでください。ループ終了後に一度だけ出力してください。

Python 3.8+ を使用すると、次のように実行できます:

if (n := int(input('Input value for n: '))) < 0:
print('負の数の階乗を計算できません')
そうしないと:
f = 1
範囲内の i の場合 (2, n+1):
f *= 私
print(f'{n}! = {f}')

n < 2 (ただし負ではない) の場合、ループに入らないため、最初に f に割り当てられた値 1 が正解になります。

print の配置 ("the factorial is: ", factorial) is wrong it should under i for i in range (2, num +1):

print ("the factorial is: ", factorial)
現在、print ステートメントは for ループの範囲内にあるため、各反復後に print ステートメントも評価されます。これを避けるには、print ステートメントを for ループのスコープから移動するだけです

num = int (input ("Enter a number: "))
階乗 = 1

数値 == 0 の場合:
print ("0 の階乗は 1")
elif 番号 <0:
print ("エラー、負の数には階乗がありません")
そうしないと:
i の範囲 (2, num +1) の場合:
階乗 = 階乗 * i
print ("階乗は: ", factorial)