我是个新手,所以如果这是一个太基本的问题,我真的很抱歉,但我只是不能自己解决它。 也许它被认为不够复杂(一点也不复杂),这就解释了为什么我在网上找不到合适的答案。
我已经做了一个井字游戏程序,在Python教科书的自动化无聊的东西,但是修改了一点,所以它不允许玩家在已经填满的插槽中输入'X'/'O'。 下面是它的样子:
theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ',
'low-L': ' ', 'low-M': ' ', 'low-R': ' '}
def printBoard(board):
print(board['top-L']+'|'+board['top-M']+'|'+board['top-R'])
print('-+-+-')
print(board['mid-L']+'|'+board['mid-M']+'|'+board['mid-R'])
print('-+-+-')
print(board['low-L']+'|'+board['low-M']+'|'+board['low-R'])
turn='X'
_range=9
for i in range(_range):
printBoard(theBoard)
print('''It is the '''+turn+''' player's turn.''')
move=input()
if theBoard[move]==' ':
theBoard[move]=turn
else:
print('The slot is already filled !')
_range+=1
if turn=='X':
turn ='O'
else:
turn='X'
printBoard(theBoard)
但是,我故意在已经存在这些符号的槽中输入“x”和“o”的迭代过程中,_range变量似乎根本没有增加1。
我是不是有点想念她? 有什么办法能让这一切按我的计划进行吗?
提前谢谢你。
通过while
循环立即清理输入,而不是增加范围,会更容易。
move = input(f"It is the {turn} player's turn.")
while theBoard[move]!=' ':
move=input('The slot is already filled')
您的尝试没有成功,因为您在使用_range
后更改了它,而更改后它没有被使用。