1

与えられた: 2 つの正の整数 a と b (a

戻り値: a から b までのすべての奇数整数の合計。

    #My code: 
    a = 100
    b = 200
    for i in range(a,b):
        if i%2 == 1:
            print i

現時点では、すべての奇数のドロップダウン リストが表示されています。必要に応じて、これに「範囲」を適切に付ける方法がわかりません。上記のコードに追加して、すべての奇数整数の合計を取得するにはどうすればよいですか?

ありがとう

4

5 に答える 5

4

奇数の場合はa~の間のすべての数字を合計します。b

sum(i for i in xrange(a, b) if i%2)
于 2013-10-16T12:47:18.850 に答える
3

それを行うかなり簡単な方法は次のとおりです。

result = 0
for i in range(a,b+1):
  if i%2 == 1:
    result += i
print result
于 2013-10-16T12:47:07.580 に答える
1

これを行う方法はたくさんあります。ただし、数学について考えると、ガウスの古い問題によく似ています。ガウスは 1 から 100 までの数字を足すように求められ、高い値と低い値の各ペアの合計が 101 になることに気付きました (100 + 1、99 + 2、98 + 3…)。

high = b
low = a

したがって、いくつかのb + a値を乗算する必要があります。いくつありますか?すべての整数について、それはただ

num_pairs = (high-low) // 2

次に、その数を掛けてhigh + low答えを取得します。

result = (high + low) * num_pairs

しかし、必要なのは 1 つおきだけなので、もう一度 2 で割ります。

result //= 2

完全に:

def sumrange(low, high, step):
     num_pairs = (high - low) // 2
     result = (high + low) * num_pairs
     return result // step

またsumrange = lambda low, high, step: (high - low) * (high + low) // (2 * step)

低い値が奇数であるかどうか、および高い値が含まれているか除外されているかに応じてオフセットする必要があるため、これはまだあなたの質問に対する完全な答えではありませんしかし、私はそれを演習として残します。

これをCWの回答にして、私の数学が面倒な場合に誰かが編集できるようにします。

于 2013-10-16T13:08:52.453 に答える