python - 为什么我的尝试无法捕捉到“6”-“7”的两种模式?_Sum67_python 编码
问题描述
我大约一个月前才开始编码,目前我对这个问题有疑问:
“返回数组中数字的总和,除了忽略以 6 开头并延伸到下一个 7 的数字部分(每个 6 后面至少有一个 7)。返回 0 表示没有数字。”
我的尝试如下:
def sum67(nums):
summe=0
if 6 not in nums:
for elem in nums:
summe+= elem
else:
indexof_6= nums.index(6)
indexof_7= nums.index(7)
copynums= nums[:]
del(copynums[(indexof_6) : (indexof_7+1)])
for i in copynums:
summe+= i
return summe
不幸的是,它只返回像 [2,3,4,6,7,9] 这样只有一个 6 的列表的正确值。而当有多个 6 例如 [5,6,10,7, 5,6,9,7,1] 时,它会返回错误值。
我已经尝试在网上寻找不同的解决方案,但我似乎不理解它们......我对“.index()”的尝试是错误的吗?这个只能捕获“6”的第一个索引吗?
对于如何纠正自己的一些提示,我将非常感激:) 非常感谢!亲切的问候
解决方案
是的,index
只返回第一个匹配的索引。一种选择是在 a 存在时继续删除元素,6
然后在最后对它们求和:
def sum67(nums):
while 6 in nums:
del nums[nums.index(6):nums.index(7) + 1]
return sum(nums)
请注意,这有点低效,可以通过循环并维护一个布尔标志来加速:
def sum67(nums):
should_add = True
total = 0
for num in nums:
if num == 6:
should_add = False
if should_add:
total += num
elif num == 7:
should_add = True
return total
推荐阅读
- python - 网格搜索输入包含 NaN、无穷大或对于 dtype('float64') 而言太大的值
- json - 如何从数据库中的 JSON 中选择并显示为文本
- python - 是否可以使用素数(不是素数分解)来查找 GCD?
- azure - 使用 Microsoft 扩展日志记录框架设置 CustomDimensions
- apigee - 有没有办法在 Apigee 中部署和使用多个版本的共享流?
- python - 插件不起作用硒驱动程序(Firefox)
- python - 将 pypy3 设置为 Jupyter Notebook 的内核时出现问题
- node.js - 删除每个响应的对象属性 - Express
- python - 使用稀疏矩阵时如何保留额外的列信息?
- python - Python/Anaconda 无法在 conda 环境中找到已安装的模块