1

我写了一个程序,告诉你骑士的动作(国际象棋)。例如,如果我想知道所有可能的动作,我会输入:

possibilites("F4")结果我得到['D3', 'D5', 'E2', 'E6', 'G2', 'G6', 'H3', 'H5']了,好的,我做到了,接下来,我必须编写一个函数,在其中输入两个字段,如果这些字段是合法的,你会得到 True,如果不是,你会得到假(我不得不使用以前的功能)。例如:

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 或 index 超出范围

4

1 回答 1

2

我认为该方法的适当解决方案legal_way是:

  1. 确定包含路径项len的数组参数的长度。param
  2. 0tolen - 2迭代,并且在每次迭代时,检查legal方法是否返回Truefor ( param[i], param[i+1])

您必须为paramis01

应该就这么简单——祝你好运!

于 2012-11-11T22:27:29.543 回答