检查输入的坐标是否有效

时间:2016-05-12 19:54:23

标签: python

所以我编写了一个python函数,用于以[column][row] - >格式测试用户输入的输入。例如。 " 23"对于第2列,第3行。我可以更改电路板的大小,但我不太确定实施检查的最佳方法是确保程序不会被压缩。这些输入,但只是提示用户再次输入坐标:

  1. 用户输入空格(按回车键)。
  2. 用户输入行或列索引范围之外的坐标。
  3. 用户输入一个字母或任何其他字符而不是数字。
  4. 这是我目前的python检查:

    def checkIfMoveIsValid(Board, Move):
      Row = Move % 10
      Column = Move // 10
      MoveIsValid = False
      if Board[Row][Column] == " ":
        MoveIsValid = True
      return MoveIsValid
    

    我尝试了这个 - >

      inp = input()
      if inp and inp.isdigit():
        Coordinates = int(inp)
      else:
        return 0
      return Coordinates
    

    但是这只检查没有坐标和除正确输入之外的任何东西。但是,它不会检查坐标是否在范围内,因此,如果输入超出范围的坐标,程序会崩溃并显示:list index out of range

2 个答案:

答案 0 :(得分:-1)

这样的事情会对你有用吗?

def checkIfMoveIsValid(Board, Move):
    MoveIsValid = False
    while MoveIsValid == False:
        inp = raw_input("coordinates: ")
        if inp.isdigit() and len(inp) == 2:
            x_coord = int(inp[0])
            y_coord = int(inp[1])
            MoveIsValid = True
            return x_coord, y_coord
        else:
            print "enter the coordinates again please."

答案 1 :(得分:-1)

我会用两种方法。一个用于获取输入,一个用于检查:

def check_input(Board,input):
    #I assume the Board has dimensions (Board.size) x (Board.size)
    #I also assume you can get the dimensions of the board
    return input in range(11,Board.size**2+1)

def get_input():
    valid = False
    while valid is False:
        position = int(raw_input("Enter a valid board position: "))
        valid = check_input(Board,position)
    return position