我写了一个节目,告诉你骑士的运动(国际象棋)。 例如,如果我想知道所有可能的动作,我会输入:
possibilites("F4")
我得到了['D3', 'D5', 'E2', 'E6', 'G2', 'G6', 'H3', 'H5']
,好吧我做到了,接下来,我必须写一个函数,你输入两个字段,如果这些字段是合法的,你' d得到真,如果他们不是你得到假(我必须使用前一个函数)。
例如:
legal("F4","D3")
>>>True
代码:
def legal(field1,field2):
c=possibilities(field1)
if field1 and field2 in a:
return True
return False
我遇到了以下函数的问题,我必须写一下: 我必须放入骑士的路径,我的功能必须告诉我它是否合法,我不得不使用之前的功能。
例如:
>>> legal_way(["F3", "E1", "G2", "H4", "F5"])
True
>>> legal_way(["F3", "E1", "G3", "H5"])
False
>>> legal_way(["B4"])
True
我知道我必须在列表中循环并在legal(field1,field2)
中放置第一和第二项,如果它是假的,那么一切都是假的,但是如果它是真的我必须继续到最后,这有如果我只有一个领域也可以工作。
我被困了,该怎么办?
def legal_way(way):
a=len(way)
for i in range(0,a-2):
if a==1:
return true
else:
if legal(way[i],way[i+1]):
return True
return False
我得到True或索引超出范围
答案 0 :(得分:2)
我认为legal_way
方法的合适解决方案是:
len
的长度param
。0
到len - 2
进行迭代,并在每次迭代时检查legal
方法是否返回True
(param[i]
,{{1} }}) 当param[i+1]
的长度为param
或0
应该这么简单 - 祝你好运!