首页 > 解决方案 > CodingBat Python - 清单 2 总和(67)

问题描述

返回数组中数字的总和,除了忽略以 6 开头并延伸到下一个 7 的数字部分(每个 6 后面至少有一个 7)。如果没有数字,则返回 0。

请帮助我解决问题。对于其他输入值,我得到正确的输出值..并且还建议我编写代码的简短方法..似乎有点太长了

def sum67(nums):
  count=0
  i=0
  switch = 0
  if len(nums) == 0:
    count=0
  else:
    while i < len(nums):
      if nums[i] != 6 and switch == 0 and nums[i] != 7:
        count += nums[i]
        i+=1
        #print("incremented")
        continue
      if nums[i] == 6 and switch == 0:
        switch = 1
        #print("switch ON")
        i+=1
      if nums[i] == 6 and switch == 1:
        i+=1
      if nums[i]==7 and switch==0 :
        count+=nums[i]
        #print("again 7")
        i+=1
      if switch == 1 and nums[i] == 7:
        switch = 0
        #print("switch OFF")
        i+=1
      else:
        i+=1
  #print(count)
  return count

输出:输入 1:sum67([2, 7, 6, 2, 6, 7, 2, 7]) 预期:18
输出我得到:20

输入 2:sum67([2, 7, 6, 2, 6, 2, 7]) 预期:9 我得到的输出:11

标签: python-3.x

解决方案


试试这个

def sum67(nums):
  result = 0
  startadding = True
  for val in nums:
    if val == 6:
      startadding = False
    if startadding:
      result +=val
    if val == 7:
      startadding = True
  return result
print(sum67([2, 7, 6, 2, 6, 7, 2, 7]))

推荐阅读