私はPythonが初めてで、チュートリアルから一言一句入力していますが、本来あるべき結果が得られません。基本的にはその範囲から複数の回答を期待していますが、結果は 1 つしか得られません。
>>> sum = 0
>>> for i in range (10): sum = sum + i
>>> print (sum)
45
どこが間違っていますか?
sum()は既に Python の組み込み関数である、使用するsum
のは悪い考えであることに注意してください。代わりにここで使用total
total = 0
for i in range(10):
total = total + i # same as total += i
print(total)
与えます:
0
1
3
6
10
15
21
28
36
45
これはあなたが期待/望んでいた出力ですか?
Python では空白/インデントが重要であるため、ステートメントを関数/ループ/etc の一部にしたい場合は、ブロック内の他のステートメントと同じレベルにインデントする必要があります。
対照的に、元のコードは、より慣習的にフォーマットされた次のようになります。
total = 0
for i in range(10):
total = total + i # same as total += i
print(total)
したがって、ループの実行が終了した後に一度print
だけ呼び出されたことがわかります。インデントは、2 つのバージョンのすべての違いを生みます。
最後に、 PEP8 - The Python Style Guideは、関数名とその引数の間にスペースがあってはならないことを述べているので、、などよりもrange(10)
range (10)
print()
print ()
PEP 8は、すべての Python プログラマーにとって読みやすいものです。
それは実際、あなたが期待すべき正しい答えです。これが証拠です(私の主張を証明するために小さなJSを気にしないでください)
sum
ここで、ループの反復ごとに変数を出力したい場合は、コードを次のように変更する必要があります。
sum = 0
for i in range (10):
sum = sum + i
print (sum)
Python では間隔が重要です。非常に重要です。
ここには何も問題はありません。各ステップでは、合計する次の数値を追加しているので、各ステップでは 0、1、3、6、....、45 です。そして、その答えを出力します。
すべてのステップを印刷したい場合は、印刷が for ブロック内にあることを確認する必要があります。
for i in range (10):
sum = sum + i
print (sum)
(インデントに注意してください)
PS。sum
変数名として使用しないでください。これはすでにグローバル関数であるため、割り当てるsum=0
ことで古い意味が削除されます-sum(range(10))
新しいpythonシェルをチェックインしてください