Как вы находите нечетные элементы в массиве?
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". Я планирую добавить все значения в нечетные элементы вверх. Может ли кто-то указать мне в правильном направлении, что я делаю неправильно?
Благодарю.
4 ответа
- Вы не суммируете их
- я +1 ничего не делаю
чтобы получить все нечетные элементы
odds = [n for n in nums if n%2]
получить только сумму нечетных элементов
sum_odds = sum(n for n in sums if n % 2)
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
будет означать, что четное, если вы хотите шансы, число не делится на два. Следовательно, это должно быть изменено на if i%2 != 0
или же if i%2
, Вы также должны будете объявить odd
список перед for i ...
цикл, так что вы можете добавить числа в num
которые отвечают условию в if i%2
структура выбора управления. Вы должны добавить номер в num
при выполнении odd.append(i)
, в данный момент вы переназначаете нечетное новое значение. Вы также не должны увеличивать i
, "Я" должен представлять число в num
не индекс числа в num
,
Можно сделать в одну строку:
print sum(x for x in num if x & 1)
Также см. Мой комментарий под вопросом, где вы ошиблись.
Если вы пытаетесь найти сумму элементов в нечетных местах в массиве:
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)