Список, основанный на изменении числа для начинающих, с вводом, который не является str

#python #exception #input #tic-tac-toe

Вопрос:

Я пытаюсь сделать простую игру в крестики-нолики на python, но в настоящее время я застрял на изменении списка, который используется для изменения сетки в соответствии с моей проблемой:

 grid = [" ", "1", "2", "3", "4", "5", "6", "7", "8", "9"]                       
def grids():                                                                   
    print(grid[1]   " | "   grid[2]   " | "   grid[3])                        
    print(grid[4]   " | "   grid[5]   " | "   grid[6])                                 
    print(grid[7]   " | "   grid[8]   " | "   grid[9])                             

.....                                                                                 
# picked is what ive selected ( X or O )                                                                                              

while True:                                                                      
    grids()                                                                           
    choose = input(f"choose a number and place your {picked}:")               
    if isinstance(choose, int) not in grid and choose not in grid:              
        print("wrong input, try again")                                            
    else:                                                                              
        grid[choose] = grid[choose].replace(grid[choose], picked)              
 

(не на 100% уверен, что последняя часть верна, я так сильно изменился за последний час, что даже не знаю, работает ли она вообще)

Я заставил это работать раньше, список сетки был изменен так, как мне нравилось.
но только если я изменил input = ..на int(input)= ..

Но как только я ввел строку в качестве входных данных (например, «d»), она разбилась и не знаю, что с ней делать. Я тоже попробовал эту try/except функцию, но безуспешно.

Ответ №1:

Если вы ищете способ найти тип ввода, вы можете использовать String.isnumeric .

 def until_user_enters_a_number():
  clear = False
  entered = 0
  while not clear:
    entered = input('I'm going no where before you enter a number: ');
    clear = entered.isnumeric()
    # make sure the number is between 0 and 9
    # may be you also want to make sure the number wasn't selected once already
  return int(entered)

 

Это будет держать пользователя в цикле до тех пор, пока он не введет допустимый ввод, вы также можете добавить в него дополнительные утверждения.