最近,我换了专业并且对计算机科学世界着迷了,我正在努力学习Python。我真的很喜欢它,但是有时候很多人都会卡住。我目前正在上Udemy课程,并尝试着手解决第一个里程碑问题,但是似乎一切都应运而生,但是...结果出错...我所想的还没有完成,但是我想测试一下只是为了确保一切都按计划进行。
我收到以下错误,但仍然给我结果... 如果有人对初学者有任何提示或建议,请多加赞赏! (第一篇文章!不错!:'))
| |
| |
| |
Player 1 are you X or O? X
Please Input a Number 1-9: 6
| |
| |O
| |
Traceback (most recent call last):
File "C:/Users/Danny/Desktop/Python/Python Bootcamp/Milestones/TicTacToe.py", line 76, in <module>
display(gameon_Board)
File "C:/Users/Danny/Desktop/Python/Python Bootcamp/Milestones/TicTacToe.py", line 17, in display
print(board[7]+'|'+board[8]+'|'+board[9])
TypeError: 'NoneType' object is not subscriptable
以下代码
"""This is a TIC TAC TOE GAME!
You need to do the following...
We need to print a board.
Take in player input.
Place their input on the board.
Check if the game is won,tied, lost, or ongoing.
Repeat c and d until the game has been won or tied.
Ask if players want to play again.
Good Luck! """
#Display Board
def display(board):
print(board[7]+'|'+board[8]+'|'+board[9])
print(board[4]+'|'+board[5]+'|'+board[6])
print(board[1]+'|'+board[2]+'|'+board[3])
#Sets up player markers
def player_Marker():
marker = ' '
while marker != 'X' and marker != 'O':
marker = input("Player 1 are you X or O? ")
player1 = marker
if player1 == 'X':
player2 = 'O'
else:
player2 = 'X'
return (player1,player2)
#Takes User Position Input On Board
def player_Choice():
position = 'wrong'
while position not in range(1,10):
position = int(input("Please Input a Number 1-9: "))
return position
#Tack on Inputs to Board
# CLEAN_Board = ['#',' ',' ',' ',' ',' ',' ',' ',' ',' ']
gameon_Board = ['#',' ',' ',' ',' ',' ',' ',' ',' ',' ']
def boardUP(board,position):
turn = 1
if turn == 1:
gameon_Board[position] = player1_Marker
turn = turn - 1
if turn == 0:
gameon_Board[position] = player2_Marker
turn += 1
return display(gameon_Board)
# All Together
game_on = True
gameon_Board = ['#',' ',' ',' ',' ',' ',' ',' ',' ',' ']
while game_on:
display(gameon_Board)
player1_Marker , player2_Marker = player_Marker()
position = player_Choice()
gameon_Board = boardUP(gameon_Board,position)
display(gameon_Board)
答案 0 :(得分:0)
display()
不返回任何内容,它仅打印电路板。因此,默认返回值为None
。
但是boardUP()
以return display(gameon_Board)
结尾,因此它返回的是None
值。
然后使用
将结果分配回变量
gameon_Board = boardUP(gameon_Board,position)
因此,在第一次迭代之后,gameon_Board
不再包含板元素列表,而是包含None
。然后,当您尝试访问其下标时,会出现错误。
此外,您将木板作为boardUP
的参数传递,但它从不使用它。它改为使用全局变量。您应该使用参数。
将功能更改为:
def boardUP(board,position):
turn = 1
if turn == 1:
board[position] = player1_Marker
turn = turn - 1
if turn == 0:
board[position] = player2_Marker
turn += 1
display(board)
return board