Python 程序可以';不要只返回True和False
我的问题如下: 你生活在卡特西亚市,那里所有的道路都以完美的网格布局。你提前十分钟到达,没有预约,所以你决定趁机去散散步。该市为市民的手机上提供了一个步行生成应用程序——每次你按下按钮,它都会向你发送一组表示步行方向的单字母字符串(例如Python 程序可以';不要只返回True和False,python,Python,我的问题如下: 你生活在卡特西亚市,那里所有的道路都以完美的网格布局。你提前十分钟到达,没有预约,所以你决定趁机去散散步。该市为市民的手机上提供了一个步行生成应用程序——每次你按下按钮,它都会向你发送一组表示步行方向的单字母字符串(例如['n','s','w','e'])。你总是只为每个字母(方向)走一个街区,你知道穿过一个城市街区需要一分钟,所以创建一个函数,如果应用程序给你的步行正好需要十分钟(你不想早或晚!),那么该函数将返回真值,当然,它会让你回到起点。否则返回false 输入['n',
['n','s','w','e']
)。你总是只为每个字母(方向)走一个街区,你知道穿过一个城市街区需要一分钟,所以创建一个函数,如果应用程序给你的步行正好需要十分钟(你不想早或晚!),那么该函数将返回真值,当然,它会让你回到起点。否则返回false
输入['n','s','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
请测试下面的代码
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))
尝试删除“else”部分。因此,在函数的末尾,返回的结果是,对于任何内部if/elif链,您都没有
else
。我感觉您并不真正理解else
或elif
中的el
的含义。您似乎希望执行所有else
和elif
块,而不管是执行上一个if
还是elif
块。if
/elif
链在第一个通过的测试时立即停止-它不会执行任何进一步的elif
测试,或者如果遇到通过的测试,它不会执行else
块。您的代码有明显的缩进错误,但正确的缩进应该是什么并不明显。您的问题陈述应该包含有效的Python,以便我们对其进行分析。请修复这个错误(在这个站点的桌面版本上,粘贴你的代码,然后选择它并键入ctrl-K)。我测试了上面的代码,它返回的结果和你期望的一样。