【问题标题】:Program can't return True only False程序不能只返回 True False
【发布时间】:2020-10-13 18:54:48
【问题描述】:

我有来自codewars 的以下问题:

您住在笛卡尔市,所有道路都以完美的网格布局。你提前十分钟到了约会,所以你决定借此机会去散散步。该市在其手机上为其市民提供了一个步行生成应用程序——每次您按下按钮时,它都会向您发送一组代表步行方向的单字母字符串(例如['n', 's', 'w', 'e'])。对于每个字母(方向),您总是只走一个街区,并且您知道穿越一个街区需要一分钟,因此创建一个返回 true 的函数,如果应用程序为您提供的步行将花费您正好十分钟(您不想早或晚!),当然,会让你回到你的起点。否则返回 false。

输入['n','s','n','s','n','s','n','s','n','s'] 应该返回True,但我的以下解决方案返回None

def is_valid_walk(walk):
if not len(walk) == 10:
    return False

elif 'n' in walk:
    if not 's' in walk:
        return False
    elif not walk.count('n') == walk.count('s'):
        return False

elif 's' in walk:
    if not 'n' in walk:
        return False

elif 'e' in walk:
    if not 'w' in walk:
        return False
    elif not walk.count('e') == walk.count('w'):
        return False

elif 'w' in walk:
    if not 'e' in walk:
        return False

else:
    return True

【问题讨论】:

  • 尝试删除“else”部分。所以在函数的最后只返回 True
  • 您的任何内部 if/elif 链都没有 else
  • 我感觉你并不真正理解elseelif 中的el 是什么意思。无论前面的ifelif 是否执行,您似乎都希望您的所有elseelif 块都能执行。 if/elif 链在第一个通过的测试时立即停止 - 如果它通过测试,它不会执行任何进一步的 elif 测试或 else 块。
  • 您的代码有明显的缩进错误,但正确的缩进应该是什么就不那么明显了。您的问题陈述应包含有效的 Python,以便我们对其进行分析。请edit修复此错误(在此站点的桌面版本上,粘贴您的代码,然后选择它并键入ctrl-K。)

标签: python


【解决方案1】:

请测试以下代码。

def is_valid_walk(walk):
    if not len(walk) == 10:
        return False
    elif 'n' in walk:
        if walk.count('n') == walk.count('s'):
            return True
        else:
            return False
    elif 's' in walk:
        if walk.count('s') == walk.count('n'):
            return True
        else:
            return False
    elif 'e' in walk:
        if walk.count('e') == walk.count('w'):
            return True
        else:
            return False
    elif 'w' in walk:
        if walk.count('w') == walk.count('e'):
            return True
        else:
            return False

        

walk = ['n', 's', 'n', 's', 'n', 's', 'n', 's', 'n', 's']
print(is_valid_walk(walk))

【讨论】:

  • 我测试了上面的代码,结果如你所愿。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 2012-02-27
相关资源
最近更新 更多