I have the following code for a basic TicTacToe game. When playing the code does not break out of the while loop even when the winner is True and the length of used numbers is less than 9. I tried debugging it with breakpoints and the debugger indicates the breakpoint is hit, but the while loop persists.
def TicTacToe():
#options available
nums = [0,1,2,3,4,5,6,7,8,9]
used = []
#winner winner chicken dinner combinations
#board
def board():
print(f" {nums[0]} | {nums[1]} | {nums[2]} ")
print("----|-----|----")
print(f" {nums[3]} | {nums[4]} | {nums[5]} ")
print("----|-----|----")
print(f" {nums[6]} | {nums[7]} | {nums[8]} ")
# def progress():
# return wwcd
def round(player = "X"):
print(used)
winner = False
while len(used) < 9 and winner == False:
print(len(used))
if player == "X":
board()
selected = int(input("Select number on the board to place X: "))
if selected in nums and selected not in used:
used.append(selected)
nums[selected] = "X"
if (nums[0] == "X" and nums[1] == "X" and nums[2] == "X") or (nums[3] == "X" and nums[4] =="X" and nums[5] =="X") or (nums[6] == "X" and nums[7] =="X" and nums[8] =="X") or (nums[0] == "X" and nums[4] =="X" and nums[8] =="X") or (nums[6] == "X" and nums[4] =="X" and nums[2] =="X") or (nums[0] == "X" and nums[3] =="X" and nums[6] =="X") or (nums[1] == "X" and nums[4] =="X" and nums[7] =="X") or (nums[2] == "X" and nums[5] =="X" and nums[8] =="X"):
board()
print("Congradulations X, you win!")
winner = True
break
else:
print('O turn now')
round("O")
elif player == "O":
board()
selected = int(input("Select number on the board to place O: "))
if selected in nums and selected not in used:
used.append(selected)
nums[selected] = "O"
if (nums[0] == "O" and nums[1] == "O" and nums[2] == "O") or (nums[3] == "O" and nums[4] =="O" and nums[5] =="O") or (nums[6] == "O" and nums[7] =="O" and nums[8] =="O") or (nums[0] == "O" and nums[4] =="O" and nums[8] =="O") or (nums[6] == "O" and nums[4] =="O" and nums[2] =="O") or (nums[0] == "O" and nums[3] =="O" and nums[6] =="O") or (nums[1] == "O" and nums[4] =="O" and nums[7] =="O") or (nums[2] == "O" and nums[5] =="O" and nums[8] =="O"):
board()
print("Congradulations O, you win!")
winner = True
print('Hit, Winner found')
else:
round()
round()
TicTacToe()