Недавно я решил пересмотреть свою игру TicTacToe, которую я делал около 3 месяцев go с бесплатным sh набором глаз для отладки, и в частности, есть одна ошибка, которая продолжает меня беспокоить. По сути, у меня есть этот код:
def player_choice(board):
'''Asks the player for their next position, calls a func to check if it's free'''
'''and returns the position if it's free for later use'''
spot = None
while spot not in range(1, 10) or not space_check(board, spot):
try:
spot = int(input("Choose your next position (1-9): "))
except:
print("Hmm, looks to me like your input was invalid")
else:
break
return spot
Это функция из более широкой схемы вещей, но что ломает всю игру, так это то, что мне нужно целое число в качестве входных данных. , строго в диапазоне от 1 до 10 . Прежде чем пытаться обработать ошибки, я использовал некоторое время l oop, которое продолжало запрашивать int, если была задана str:
spot = int(input("Choose your next position (1-9): "))
while spot not in range (1, 10) or not space_check(board, spot):
spot = int(input("Looks like the spot you're trying to choose is invalid!\nPlease choose another position (1-9): "))
return spot
Но затем я переключился на эту версию, и здесь она не принимает str в качестве ввода, но он будет принимать int вне диапазона 1-10. У меня вопрос: что я могу сделать, чтобы эта работа работала так, как мне нужно, взять целое число строго от 1 до 10 и продолжать спрашивать, пока не будет предоставлен именно этот ввод?