我怎么称呼这个功能?

时间:2012-11-11 22:19:14

标签: python

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

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

1 个答案:

答案 0 :(得分:2)

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

  1. 确定包含路径项的数组参数len的长度param
  2. 0len - 2进行迭代,并在每次迭代时检查legal方法是否返回Trueparam[i],{{1} }})
  3. param[i+1]的长度为param0

    时,您必须包含特殊条件

    应该这么简单 - 祝你好运!