#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)
Это будет держать пользователя в цикле до тех пор, пока он не введет допустимый ввод, вы также можете добавить в него дополнительные утверждения.