-1

誰かがこれで私を助けてくれませんか。このコードでは常にエラーが発生しますが、何が問題なのかわかりませんか?

x= 1523

while x <= 10503:
    x=x+2
    print sum(x)

編集。わかりづらくてすみません。はい、1523 から 10503 までのすべての数値の合計 (2 の間隔を含む) を取得したいと考えています。

4

4 に答える 4

6

pythonic ソリューションは次のとおりです。

print(sum(range(1523, 10504, 2)))

(while ループを使用して整数の範囲を含むリストを作成するのは、それをより効率的に行うビルトインがある場合、少しばかげています。)

于 2012-10-30T11:56:50.470 に答える
5

ループを使用する理由

>>> ((10503-1523+2)//2  * (1523 + 10503))//2
27004383

これは、「1 から 100 までのすべての整数の合計は?」という古い質問の単なる拡張です。これは

50*101 (1+100 + 2+99 + 3+98 + ... 50+51)
于 2012-10-30T12:23:09.720 に答える
2

問題は、 sum() がタプル、リストなどの反復可能な型でのみ機能することです。

そして、合計を整数に適用しているので、うまくいきません。

于 2012-10-30T11:35:17.963 に答える
0

あなたはこのようなことを試すことができます:

x = 1523
x_list = []
while x <= 10503:
    x=x+2
    x_list.append(x)
print(sum(x_list))

最初の要素が1523、最後の要素が10503、共通の差が2である等差数列のすべての数値の合計を取得したいとします。あなたの質問からは明らかではありませんでした。

于 2012-10-30T11:46:20.353 に答える