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
至於你做錯了什麼,你遍歷包含的元素0
可迭代到size
這不會總是是num
值(除非num
確實range(size)
)。一旦你讓i
代表你正在迭代的num
的值,if i%2 == 0
將意味着它的,甚至,如果你想賠率,數字musk't可以被二整除。因此,應將其更改爲if i%2 != 0
或if i%2
。您還需要在for i ...
循環之前聲明odd
清單,因此您可以追加符合if i%2
選擇控制結構中條件的num
中的數字。您應該通過執行odd.append(i)
來追加num
中的號碼,此時您將重新分配一個新值。你也不應遞增i
。 '我'應該代表num
中的一個數字,而不是索引中的數字num
。
你想添加奇怪的元素嗎?還是奇數指數的元素? – asheeshr 2013-05-04 02:31:14
你的'totalOdds'函數....你不需要增加'i'; '我在範圍'位已經這樣做了。你在循環的外面打印它只會打印一個數字(最後一個)。 – mpen 2013-05-04 02:31:54