python - Python棋盘游戏网格[数组和列表问题]
问题描述
grid = [[' --- --- --- '], ['| 1 | 2 | 3 |'],
[' --- --- --- '], ['| 4 | 5 | 6 |'],
[' --- --- --- '], ['| 7 | 8 | 9 |'],
[' --- --- --- ']]
def board():
for i in grid:
print(''.join(i)
def player():
x = 0
y = 0
player1 = input("Enter Player1 move : ")
for i in grid:
for j in i:
if j == player1:
grid[1][1] = 'X'
board()
player()
输出:
--- --- ---
| 1 | 2 | 3 |
--- --- ---
| 4 | 5 | 6 |
--- --- ---
| 7 | 8 | 9 |
--- --- ---
虽然代码尚未完成,但我的问题是,网格中的数字在应该根据用户输入进行更改时并没有改变..我做错了什么!?:(
解决方案
再想一想,我看到您无论如何都在将字符串与字符串进行比较,所以这里的问题是您的j
变量从未假设网格中的所有数值(即 1、2、3 等)。更好的方法是以不同的方式定义网格并更改打印方式。
您首先在网格的开头和结尾定义要打印的图案。然后遍历网格的行并创建要打印的字符串:
startEnd = ' --- --- --- '
grid2 = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9']]
def board():
print (startEnd)
for row in grid2:
s = '| {0} | {1} | {2} |'.format(row[0], row[1], row[2])
print(s)
print (startEnd)
def player():
x = 0
y = 0
player1 = raw_input("Enter Player1 move : ")
for i in grid2:
for j in i:
if j == player1:
grid2[1][1] = 'X'
board()
player()
输出是:
--- --- ---
| 1 | 2 | 3 |
| 4 | X | 6 |
| 7 | 8 | 9 |
--- --- ---
推荐阅读
- ruby-on-rails - 安装 aws-sdk gem 后,网站停止在 heroku 上工作
- reactjs - 登录模式的状态应该在哪里?
- etl - 复杂计数行 etl 要求
- php - 如何在 Laravel 验证闭包的 $value 参数中检索数据?
- python - 无法通过 epel-release 安装 python36,找不到包 python36
- reactjs - GraphQL Apollo React Hooks 查询根据初始化顺序返回 null
- sql - 如何为可能是患者标识符的给定 FKEY 创建“labCounter”MS 访问查询
- sql - 使用 SQL 创建一个基于 ID 显示上次查询日期的新列
- java - 将数组和其他内容传递给 var args
- amazon-web-services - AWS elasticbeanstalk 100 % of cpu is in use 降级