终端未注册定义的功能



我正在python中尝试一个简单的项目,它是创建一个井字游戏。下面,您将看到我的代码。当我在终端中粘贴代码时,我得到的错误消息是display_board函数没有定义,但正如你从下面的代码中看到的,它是第一个定义的函数。我也包括了这些步骤。顺便说一句,我下面的教程省略了第2步,尽管我不明白为什么。有人能帮忙吗?

#Imported modules
import random
# Global variables
theBoard = [' '] * 10   # a list of empty spaces
available = [str(num) for num in range(0,10)] # a List Comprehension
players = [0,'X','O'] 
#Step 1: Write a function that can print out a board. Set up your board as a list, 
#where each index 1-9 corresponds with a number on a number pad,
# so you get a 3 by 3 board representation.
def display_board(a,b):
print('n'*100)
print('Available   TIC-TAC-TOEn'+
'  movesnn  '+
a[7]+'|'+a[8]+'|'+a[9]+'        '+b[7]+'|'+b[8]+'|'+b[9]+'n  '+
'-+-+-        -+-+-n  '+
a[4]+'|'+a[5]+'|'+a[6]+'        '+b[4]+'|'+b[5]+'|'+b[6]+'n  '+
'-+-+-        -+-+-n  '+
a[1]+'|'+a[2]+'|'+a[3]+'        '+b[1]+'|'+b[2]+'|'+b[3]+'n')
display_board(available,theBoard)

#Step 2: Write a function that can take in a player input and assign their marker as 'X' or 'O'. 
#Think about using while loops to continually ask until you get a correct answer.
def player_input():
marker = ''
while marker != 'X' and marker != 'O':
marker = input('Player 1: Do you want to be X or O? ').upper()
if marker == 'X':
return ('X', 'O')
else:
return ('O', 'X')
player1_marker, player2_marker = player_input()
#Step 3: Write a function that takes in the board list object, a marker ('X' or 'O'),
# and a desired position (number 1-9) and assigns it to the board.
def place_marker(avail,board,marker,position):
board[position] = marker
avail[position] = ' '
#Step 4: Write a function that takes in a board and a mark (X or O) and then checks to see if that mark has won.
def win_check(board,mark):
return 
((board[7] ==  board[8] ==  board[9] == mark) or # across the top
(board[4] ==  board[5] ==  board[6] == mark) or # across the middle
(board[1] ==  board[2] ==  board[3] == mark) or # across the bottom
(board[7] ==  board[4] ==  board[1] == mark) or # down the left
(board[8] ==  board[5] ==  board[2] == mark) or # down the middle
(board[9] ==  board[6] ==  board[3] == mark) or # down the right 
(board[7] ==  board[5] ==  board[3] == mark) or # diagonal
(board[9] ==  board[5] ==  board[1] == mark)) # diagonal
#Step 5: Write a function that uses the random module to randomly decide which player goes first.
def random_player():
return random.choice((-1, 1))

#Step 6: Write a function that returns a boolean indicating whether a space on the board is freely available.  
def space_check(board,position):
return board[position] == ' ' #bool to check the position between 0,10 
#Step 7: Write a function that checks if the board is full and returns a boolean value. True if full, False otherwise.
def full_board_check(board):
return ' ' not in board[1:]
#Step 8: Write a function that asks for a player's next position (as a number 1-9) 
#and then uses the function from step 6 to check if it's a free position. 
# If it is, then return the position for later use.
def player_choice(board,player):
position = 0
while position not in [1,2,3,4,5,6,7,8,9] or not space_check(board, position):
try:
position = int(input('Player %s, choose your next position: (1-9) '%(player)))
except:
print("I'm sorry, please try again.")  
return position
#Step 9: Write a function that asks the player if they want to play again and returns a boolean True if they do want to play again.
def replay():
return input('Do you want to play again? Enter Yes or No: ').lower().startswith('y')
#Run the game 
while True:
print('n'*100)
toggle = random_player()
player = players[toggle]
print('Welcome to Tic Tac Toe!')
print('For this round, Player %s will go first!' %(player))
game_on = True
input('Hit Enter to continue')    
while game_on:
display_board(available,theBoard)
position = player_choice(theBoard,player)
place_marker(available,theBoard,player,position)
if win_check(theBoard, player):
display_board(available,theBoard)
print('Congratulations! Player '+player+' wins!')
game_on = False
else:
if full_board_check(theBoard):
display_board(available,theBoard)
print('The game is a draw!')
break
else:
toggle *= -1
player = players[toggle]
print('n'*100)
# reset the board and available moves list
theBoard = [' '] * 10
available = [str(num) for num in range(0,10)]
if not replay():
break

我认为您以错误的方式运行项目。将此代码复制到扩展名为py的文件中,然后在该文件的目录上打开您的终端并键入"pythonfile.py">

最新更新