誰かがこれで私を助けてくれませんか。このコードでは常にエラーが発生しますが、何が問題なのかわかりませんか?
x= 1523
while x <= 10503:
x=x+2
print sum(x)
編集。わかりづらくてすみません。はい、1523 から 10503 までのすべての数値の合計 (2 の間隔を含む) を取得したいと考えています。
誰かがこれで私を助けてくれませんか。このコードでは常にエラーが発生しますが、何が問題なのかわかりませんか?
x= 1523
while x <= 10503:
x=x+2
print sum(x)
編集。わかりづらくてすみません。はい、1523 から 10503 までのすべての数値の合計 (2 の間隔を含む) を取得したいと考えています。
pythonic ソリューションは次のとおりです。
print(sum(range(1523, 10504, 2)))
(while ループを使用して整数の範囲を含むリストを作成するのは、それをより効率的に行うビルトインがある場合、少しばかげています。)
ループを使用する理由
>>> ((10503-1523+2)//2 * (1523 + 10503))//2
27004383
これは、「1 から 100 までのすべての整数の合計は?」という古い質問の単なる拡張です。これは
50*101 (1+100 + 2+99 + 3+98 + ... 50+51)
問題は、 sum() がタプル、リストなどの反復可能な型でのみ機能することです。
そして、合計を整数に適用しているので、うまくいきません。
あなたはこのようなことを試すことができます:
x = 1523
x_list = []
while x <= 10503:
x=x+2
x_list.append(x)
print(sum(x_list))
最初の要素が1523、最後の要素が10503、共通の差が2である等差数列のすべての数値の合計を取得したいとします。あなたの質問からは明らかではありませんでした。