提问者:小点点

关于用迭代法改变值域函数变元的问题


我是个新手,所以如果这是一个太基本的问题,我真的很抱歉,但我只是不能自己解决它。 也许它被认为不够复杂(一点也不复杂),这就解释了为什么我在网上找不到合适的答案。

我已经做了一个井字游戏程序,在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。

我是不是有点想念她? 有什么办法能让这一切按我的计划进行吗?

提前谢谢你。


共1个答案

匿名用户

通过while循环立即清理输入,而不是增加范围,会更容易。

move = input(f"It is the {turn} player's turn.")
while theBoard[move]!=' ':
    move=input('The slot is already filled')

您的尝试没有成功,因为您在使用_range后更改了它,而更改后它没有被使用。

相关问题