-1

私はPythonが初めてで、チュートリアルから一言一句入力していますが、本来あるべき結果が得られません。基本的にはその範囲から複数の回答を期待していますが、結果は 1 つしか得られません。

>>> sum = 0
>>> for i in range (10): sum = sum + i
>>> print (sum)    
45

どこが間違っていますか?

4

3 に答える 3

8

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 プログラマーにとって読みやすいものです。

于 2012-08-11T11:44:08.653 に答える
2

それは実際、あなたが期待すべき正しい答えです。これが証拠です(私の主張を証明するために小さなJSを気にしないでください)

sumここで、ループの反復ごとに変数を出力したい場合は、コードを次のように変更する必要があります。

sum = 0
for i in range (10):
    sum = sum + i
    print (sum) 

Python では間隔が重要です。非常に重要です。

于 2012-08-11T11:42:55.280 に答える
2

ここには何も問題はありません。各ステップでは、合計する次の数値を追加しているので、各ステップでは 0、1、3、6、....、45 です。そして、その答えを出力します。

すべてのステップを印刷したい場合は、印刷が for ブロック内にあることを確認する必要があります。

for i in range (10):
    sum = sum + i
    print (sum)

(インデントに注意してください)

PS。sum変数名として使用しないでください。これはすでにグローバル関数であるため、割り当てるsum=0ことで古い意味が削除されます-sum(range(10))新しいpythonシェルをチェックインしてください

于 2012-08-11T11:43:51.970 に答える