首页 > 解决方案 > 由于未知原因,在 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。我试图理解错误。新代码示例很受赞赏,但我主要想知道上面代码中有什么问题以及如何调整它。我希望更好地理解多个条件,而不仅仅是修复代码。

提前致谢!

标签: python

解决方案


代替 :

    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

推荐阅读