python - 由于未知原因,在 Python 循环中应用多个条件失败
问题描述
我正在做一个“简单”的 HackerRank 练习,我正在尝试将多个条件应用于列表中的项目。我尝试的“解决方案”似乎与网站上讨论的其他人一致,但不起作用。我有兴趣了解它失败的原因,因为我无法辨别我的错误。
该函数的目的是计算一个人步行的山谷。步行的相对高度存储在一个字符串中(即“DDUU”表示向下、向下、向上、向上)。步行在海平面开始和结束。该函数接受步数“n”和路线字符串。在上述情况下,它应该返回 v = 1,事实上,它确实如此。但是,当我在更长的情况下运行它时,函数的返回值不正确。
def countingValleys(n, s):
valleys = 0
position = 0
positions = []
for step in s:
if step == 'U':
position += 1
else:
position -= 1
positions.append(position)
for position in positions:
if positions[position] < 0 and positions[position+1] == 0:
valleys += 1
return valleys
s = 'DDUUUUDDDDUUDDUU'
v = countingValleys(16, s)
在这种情况下,len(s) = 16,谷数为 3,但返回的数字为 4。我试图理解错误。新代码示例很受赞赏,但我主要想知道上面代码中有什么问题以及如何调整它。我希望更好地理解多个条件,而不仅仅是修复代码。
提前致谢!
解决方案
代替 :
for position in positions:
if positions[position] < 0 and positions[position+1] == 0:
valleys += 1
你需要:
for i in range(n):
if positions[i] < 0 and positions[i+1] == 0:
valleys += 1
推荐阅读
- react-native - 从 React Native 应用程序处理异步保存到后端服务器和云存储的更好方法
- flutter - Flutter:覆盖下拉菜单项的文本样式取消了禁用状态的自动显示
- php - Laravel 服务提供者
- swift - 通过 cocoapods 在终端中安装 Realm 时出错
- prolog - 二叉树第n层的元素
- twilio - Twilio 验证是否会检查电话号码?
- python - Django在服务器上触发事件停止
- node.js - 是否可以对 NodeJ 进行编程,您可以在其中自动删除用户的垃圾箱或回收站?
- sql - 无法理解内部联接
- python - Python中让tqdm之类的函数接受不同类型的参数