python-3.x - 使用 i-1 循环找不到正确的值
问题描述
任务:
返回数组中数字的总和,对于空数组返回 0。除了数字 13 非常不吉利,因此它不算数,紧跟在 13 之后的数字也不算数。
测试样本,预期:
- sum13([1, 2, 13, 2, 1, 13]) → 4
- sum13([1, 2, 2, 1, 13]) → 6
我的代码产生以下结果:
#sum13([1, 2, 13, 2, 1, 13]) → 3
#sum13([1, 2, 2, 1, 13]) → 5
def sum13(nums):
s = 0
if not nums:
return 0
for i in range(len(nums)):
if nums[i]==13 or nums[i-1]==13:
s += 0
else:
s += nums[i]
return s
为什么它不计算最后 13 num 之前的数字?
升级版:
感谢评论,了解问题。像这样正确:
def sum13(nums):
s = 0
if not nums:
return 0
for i in range(len(nums)):
if nums[i]==13 or (nums[i-1]==13 and i-1>=0):
s += 0
else:
s += nums[i]
return s
解决方案
发生这种情况是因为对于您的第一次循环,i
是-1
.
我想你可以试试这个版本给你你想要的:
def sum13(nums):
s = 0
if nums:
prev = False
for i in range(len(nums)):
if not prev and nums[i] != 13:
s += nums[i]
prev = nums[i] == 13
return s
推荐阅读
- reactjs - 是否有任何函数可以在 react-final-form 中获取表单值
- spring-data-jpa - Spring data jpa没有获取多对一映射中的所有相关行
- java - 有没有办法以编程方式设置回收站视图的视图持有者的适配器位置?
- flask - 在弹性 beantalk 上部署 Flask 应用程序后出现 500 错误
- amazon-s3 - 将 S3 存储与部署在 GCP 上的 Jackrabbit Oak 实施应用程序集成
- javascript - 查询结果循环中的nodejs查询
- python - mplfinance 冻结 IPython 控制台
- kotlin - kotlin 中的 URL 和 EMAIL 验证 API
- node.js - AWS codeBuild 不运行 .ebextension 配置
- flutter - 如何在 Flutter 中管理颜色