python随机选择一个饭店_Python:随机选择一个点在一个tictactoe板上

尝试按名称修改这些变量是一个不好的主意(如果您真的想这样做,请参阅下面的旧答案)。这就是如何通过使用列表而不是一堆变量来改进代码:import random

board = [' '] * 9

def set_random(board,computer_mark):

board[random.randint(0, 8)] = computer_mark

def print_board(board):

lines = [' + %s +' % ('-'*5).join(['A','B','C'])]

for i in range(3):

lines.append('%d| %s |' % (i,' | '.join(board[3*i:(3*i+3)])))

if i < 2:

lines.append(' ' + '-'*19)

lines.append(' +%s+' % ('-'*17))

print('\n | | | |\n'.join(lines))

print_board(board)

random.seed(0)

set_random(board,'X')

print_board(board)

输出:

^{pr2}$

为了更好地了解哪个列表索引进入哪个字段,可以将索引可视化到板上:>>> print_board(list(map(str,range(9))))

+ A -B -C +

| | | |

0| 0 | 1 | 2 |

| | | |

-

| | | |

1| 3 | 4 | 5 |

| | | |

-

| | | |

2| 6 | 7 | 8 |

| | | |

+ -+

您可以使用locals()函数访问当前名称空间(作为dict)。因此,你可以做以下事情:-但是这是一个非常糟糕的主意。关于如何更好地解决代表和操纵董事会的一般性问题,请参见上述更多方法。在locals()[random_result] = computer_mark

编辑根据更新后的问题,完整示例:import random

valuea1 = valuea2 = valuea3 = valueb1 = valueb2 = valueb3 = valuec1 = valuec2 = valuec3 = " "

def board():

""" prints the tic-tac-toe board"""

print(" + -A B C +")

print(" | | | |")

print("1| " + valuea1 +" | " + valueb1 +" | " + valuec1 + " |")

print(" | | | |")

print(" ")

print(" | | | |")

print("2| " + valuea2 +" | " + valueb2 +" | " + valuec2 + " |")

print(" | | | |")

print(" ")

print(" | | | |")

print("3| " + valuea3 +" | " + valueb3 +" | " + valuec3 + " |")

print(" | | | |")

print(" + +")

return

random.seed(0) #to make this example reproducible

computer_mark = "X"

randomlist = ("valuea1", "valuec1", "valuea3", "valuec3")

random_result = random.choice(randomlist)

locals()[random_result] = computer_mark

board()

如果我执行上述代码,我将得到以下结果:+ -A B C +

| | | |

1| | | |

| | | |

| | | |

2| | | |

| | | |

| | | |

3| | | X |

| | | |

+ +

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值