Вернуть сумму чисел в массиве, кроме числа 13 - PullRequest
1 голос
/ 15 апреля 2020

Возвращает сумму чисел в массиве, возвращая 0 для пустого массива. За исключением того, что число 13 очень неудачно, поэтому оно не учитывается, и числа, которые приходят сразу после 13, также не учитываются.

мой код:

def sum13(nums):
  sum1 = 0
  for i in nums:
    sum1 += i

  if 13 in nums:
    ind = nums.index(13)

    if ind == len(nums)-1:
      sum13 = sum1 - 13 
    else:
      sum13 = sum1 - 13 -nums[ind+1]
    return sum13

  else:
    return sum1

происходит сбой при

nums= [1, 2, 13, 2, 1, 13]

1 Ответ

0 голосов
/ 15 апреля 2020

Для вашего списка, если вы хотите найти сумму всех чисел, отличных от 13, попробуйте:

sum( i for i in nums if i!=13)

Теперь, если вы хотите остановить суммирование, когда вы достигнете своих первых 13 в списке, попробуйте:

sum( i for i in nums[:nums.index(13)]  if i!=13)

Теперь, чтобы исключить 13 и число после этого из суммирования, попробуйте:

def sum13(nums):
    if nums[-1] == 13:
        return sum([nums[0]] + [nums[i] for i in range(len(nums)) if (nums[i] != 13 and nums[i-1] !=13)])
    else:
        return sum([nums[i] for i in range(len(nums)) if (nums[i] != 13 and nums[i-1] !=13)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...