0
print "This program computes and prints the sum of all even values"
print "between 2 and a positive integer value entered by the user. \n"

integer = input("Enter a positive integer: ")
while integer <2:
        if integer <2:
            print "Integer must be greater than 2!"
        integer = input("Enter a positive integer: ")
else:
    integer2 = input("Now enter a second integer: ")

evens = (integer - integer2)/2 + 1

while True

ユーザーに 2 つの数字を要求できるようにする必要があり、プログラムは 2 つの数字の間のすべての偶数を合計できる必要があります。プログラミングを始めたばかりで、あまり学んでいません。答えを探してみましたが、ここでの答えは、私には高度すぎるテクニックを使用していたため、意味がありませんでした. ありがとう!

4

7 に答える 7

1

対話型シェルを使用した簡単な例を次に示します。

>>> x = 9
>>> y = 31
>>> sum([z for z in range(x, y + 1) if z % 2 == 0])
220

これは、リスト内包表記と組み込みメソッドsumと呼ばれるものを使用します。

ここで、これらすべてがどのように連携するかについて説明します。

ご存知のように、Range は 2 つの引数の間の数値のリストを返します。

>>> range(x, y + 1)
[9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]

The modulo operator (%) is used to divide two numbers and then give you the remainder. This makes it very handy to find even numbers: any even number divided by 2 will have a remainder of 0.

>>> 5 % 2
1
>>> 4 % 2
0

The list comprehension uses this trick to build a list of values containing every even number in the given range.

>>> [z for z in range(x, y + 1) if z % 2 == 0]
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]

Finally, sum() iterates and adds up all the values generated by that list for you.

>>> sum([z for z in range(x, y + 1) if z % 2 == 0])
220
于 2013-09-26T20:09:24.640 に答える
0

2 つの数字を取得したら、それらの間のすべての偶数を見つける必要がありますよね?

さて、それらの間のすべての数字を見つけるには、使用しますrange(integer,integer2+1)(が含まれて+1いると想定しているため、そこにあります)。あなたが使用するその範囲内のすべての偶数を見つけてから、使用するすべてを合計するには..最後に:integer2filter(lambda x: x%2==0, range(integer, integer2+1))sum()

sum(filter(lambda x: x%2==0, range(integer, integer2+1)))

于 2013-09-26T19:44:47.817 に答える
0

これでうまくいくはずです:

start = 0
end = 0

while start < 2 or end <= start:
    start = int(raw_input("Enter start -> "))
    end = int(raw_input("Enter end ->"))

total = 0
for x in range(start, end+1):
    if x % 2 == 0:
        total += x

print total

リスト内包表記を使用して、さらに簡潔にすることができます。

start = 0
end = 0

while start < 2 or end <= start:
    start = int(raw_input("Enter start -> "))
    end = int(raw_input("Enter end -> "))

print sum([x for x in range(start, end+1) if x % 2 == 0])

両方の範囲関数で使用したわけではありません。範囲は関数end+1の 2 番目のパラメーターの前の数値までしか上がらないためです。

于 2013-09-26T19:42:37.900 に答える