# reminder to take win_1 and win_2 in here:
if sign == "| x ":
print("%s got 3 in a row, %s wins!" % (player_1, player_1))
print("%s got 3 in a row, %s wins!" % (player_2, player_2))
print(sign) # THIS IS LINE 38 -------------------
for i in range(0, 8):
x, y = 0, 0
a, b, c = 0,1,2
if board[x][a] and board[x][b] and board[x][c] == sign:
global sign # I even said: "global sign"
if turn % 2 == 0: # Here the sign value is set, and I want this value into my print_winner function.
sign = "| x "
sign = "| o "
x_1 = int(input("Type the value of x: "))
y_1 = int(input("Type the value of y: "))
list[y_1 - 1][x_1 - 1] = sign
check_winner(sign) # It should take the sign_value?
turn += 1
line 38, in check_winner
NameError: name 'sign' is not defined
Your check_winner function doesn't explicitly have any parameters. So even though you are passing the sign_value to it, there is no parameter to explicitly assign that value to in the function definition.
Furthermore sign_value is not defined globally and therefore is not automatically available in the function.
(Although it may be good practice to use a different parameter name in the function to make it clear that it's not a global variable. Otherwise, make it a global variable and don't pass it to the function explicitly.)
For your updated code, you maybe would use
(Written on my phone and completely untested.)