【发布时间】: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。 -
我感觉你并不真正理解
else或elif中的el是什么意思。无论前面的if或elif是否执行,您似乎都希望您的所有else和elif块都能执行。if/elif链在第一个通过的测试时立即停止 - 如果它通过测试,它不会执行任何进一步的elif测试或else块。 -
您的代码有明显的缩进错误,但正确的缩进应该是什么就不那么明显了。您的问题陈述应包含有效的 Python,以便我们对其进行分析。请edit修复此错误(在此站点的桌面版本上,粘贴您的代码,然后选择它并键入ctrl-K。)
标签: python