def fillaray(size):
num = [0] * size
num = [random.randint(0,9) for i in range(size)]
print(num)
return num
def totalOdds(num, size):
for i in range (size):
if i % 2 ==0:
odd = num[i]
i+1
print(odd)
正如你在def totalOdds()
中看到的那样,我试图将奇数元素与数组“num”分开。我打算在奇数元素中添加所有值。有人能指出我正确的方向,我做错了吗?
感谢。
答案 0 :(得分:3)
获取所有奇数元素
odds = [n for n in nums if n%2]
只得到奇数元素之和
sum_odds = sum(n for n in sums if n % 2)
答案 1 :(得分:1)
可以在一行中完成:
print sum(x for x in num if x & 1)
另外,请查看我在问题所在位置的评论。
答案 2 :(得分:0)
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
的迭代,这不会总是是{的值{1}}(除非num
确实是num
)。一旦你range(size)
代表i
中你正在迭代的值,num
将意味着甚至,如果你想要赔率,那么数字 musn't 可以被两个整除。因此,应将其更改为if i%2 == 0
或if i%2 != 0
。您还必须在if i%2
循环之前声明odd
列表,以便在for i ...
中附加符合{{1}条件的数字选择控制结构。在您重新分配新值时,您应该通过执行num
在if i%2
中添加号码。你也不应该递增num
。 'i'应代表odd.append(i)
中的数字,而不是i
中数字的索引。
答案 3 :(得分:0)
如果您要在数组中找到奇数位置的元素总和:
def totalOdds(num, size):
for i in range(size):
if i % 2 ==0 :
odd += num[i]
print(odd)
如果您要对奇数值元素求和:
def totalOdds(num, size):
for i in range(size):
if num[i] % 2 !=0 :
odd += num[i]
print(odd)