2016-05-12 12 views
0

だから私はユーザが入力した入力を[column][row] - > egでテストするpython関数を書いた。 "2"、 "3"列の "23"。私はボードのサイズを変更することができますが、チェックを実装する最良の方法は、これらの下でプログラムが壊れないことを確認することです入力された座標が有効かどうかを確認する

  1. ユーザーは空白を入力します(Enterキーを押します)。
  2. ユーザーは、行または列のインデックスの範囲外の座標を入力します。
  3. ユーザーは、文字以外の文字を入力します。

これは一瞬のための私の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と表示されます。

答えて

-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

私は2つの方法を使用します。 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 
関連する問題