nums = [1,2,3,4,5,6,7,8,9,10,11,12]
odds = [ n for n in nums if n%2 ]
print odds
与えます:
>>>
[1, 3, 5, 7, 9, 11]
これは、次のように関数に入れることができます。
def getOdds(aList):
return [ n for n in aList if n%2 ]
使用例:
myOdds = getOdds(nums)
print("{0} has {1} odd numbers which were {2}".format(nums,len(myOdds),myOdds))
print("The odd numbers sum to {0}".format(sum(myOdds)))
プロデュース:
>>>
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] has 6 odd numbers which were [1, 3, 5, 7, 9, 11]
The odd numbers sum to 36
あなたが間違っていることについては、thisの要素0
を含む iterable を反復処理しているため、常に値になるとは限りません (実際にでない限り)。反復している値を表すと、それは偶数であることを意味します。オッズが必要な場合は、数値が2で割り切れてはなりません。したがって、これを または のいずれかに変更する必要があります。また、ループの前にリストを宣言する必要があるため、選択制御構造で条件を満たす番号を追加できます。次のようにして番号を追加する必要がありますsize
num
num
range(size)
i
num
if i%2 == 0
if i%2 != 0
if i%2
odd
for i ...
num
if i%2
num
odd.append(i)
、現時点では、奇数に新しい値を再割り当てしています。また、インクリメントしないでくださいi
。'i' は、 の数値のインデックスではnum
なく、の数値を表す必要があります。num