2016-05-12 8 views
0

Also habe ich eine Python-Funktion geschrieben, die die Eingabe vom Benutzer im Format [column][row] -> zB prüft. "23" für Spalte 2, Zeile 3. Ich bin in der Lage, die Größe des Boards zu ändern, aber ich bin nicht sicher, was der beste Weg, um einen Check zu implementieren wäre, um sicherzustellen, dass das Programm nicht unter diesen bricht Eingaben, sondern fordert den Benutzer lediglich auf, die Koordinaten erneut einzugeben:Überprüfung, ob eingegebene Koordinaten gültig sind

  1. Der Benutzer gibt eine Leerstelle ein (drückt Enter).
  2. Der Benutzer gibt Koordinaten außerhalb des Bereichs des Zeilen- oder Spaltenindex ein.
  3. Der Benutzer gibt einen Buchstaben oder ein anderes Zeichen als eine Zahl ein.

Das ist mein Python-Check für den Moment:

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

Ich habe versucht, diese Umsetzung ->

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

aber nur, prüft, ob nicht koordinieren und alles abgesehen von den richtigen Eingang. Es wird jedoch nicht überprüft, ob die Koordinaten im Bereich liegen. Wenn also Koordinaten außerhalb des Bereichs eingegeben werden, stürzt das Programm ab und lautet: list index out of range.

Antwort

-1

so etwas würde für Sie arbeiten?

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

Ich würde zwei Methoden verwenden. Eine für die Eingabe und eine für die Überprüfung:

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 
Verwandte Themen