【发布时间】:2021-11-04 12:52:24
【问题描述】:
挑战来自于 codingbat - 对数组的元素求和,除了 6 和 7 之间的所有值,也不计算 6 或 7。
我的策略是创建一个新数组“有效”并将数组 nums 的有效元素附加到“有效”数组,然后对有效数组求和。
因为一旦检测到 6,我需要索引来检查 7,所以我的计划是枚举数组,当找到值 6 时,循环遍历数组的其余部分,直到找到 7,而不是在进程中将值 6-7 附加到数组“有效”。
我通过 MIT Python 辅导员运行我的代码,看看哪里出了问题,当我在 i+1 != 7 之后增加索引时(目的是检查数组中的下一个值是否是7) 它增加索引(它完成了对数组索引的处理并移动到下一个,而不是坚持 6 的代码并继续循环并检查 7)。
感谢任何帮助,尤其是坚持原始策略但在代码中正确实施的解决方案。
def sum67(nums):
valid = []
for i,c in enumerate(nums):
if c == 6:
#when a 6 comes up
if nums[i+1] == 7:
#if the next number is a 7
i+=1
break
#increment and break
else:
i+=1
#increment
else:
valid.append(c)
return sum(valid)
sum67([1, 2, 2, 6, 99, 99, 7])
编辑 1: 所需的输出
sum67([1, 2, 2, 6, 99, 99, 7])
是 5。(因为 1 + 2 + 2 = 5,而 6、99、99 和 7 被排除在外,因为它们是或介于 6 和 7 之间)
【问题讨论】:
-
当您说:
except for all values between 6 and 7时,您指的是值,即不是索引吗? -
请举例说明您从给定输入中寻找的输出。
-
重复 - stackoverflow.com/questions/57484048 建议
close它。
标签: python