我在网上学习python。我正在做一个项目来编写一个井字游戏。我已经建立了一个由3x3井字游戏网格表示的嵌套列表这个游戏。下面是嵌套列表:
grid = [[1,2,3],[4,5,6],[7,8,9]]
我想提示用户选择一个数字1-9,然后将嵌套列表中所选的数字替换为X或O,具体取决于选择的玩家。你知道吗
我可以在列表中很好地找到值,它会很好地打印出来,以及用户输入的数字。但是,当我尝试用if语句比较这两个值时,什么也没有发生。我只想更新if语句后面的嵌套列表值,但我不知道我做错了什么,也不知道if语句为什么不启动。我无法获取要更新的值,所以我用print语句替换了那一行,只是想看看它如何处理,但是我试图打印的那一行被忽略了。这里是if语句,其中p=用户输入的数字。你知道吗
for r in grid:
for c in r:
print str(c) + " / " + str(p) # so I can see the values
if c == p:
print "Winner winner, chicken dinner!"
当我运行代码并将其输入一个整数(在本例中为4)时,我希望看到鸡肉晚餐行打印出来,但我只得到以下结果:
1 / 4
2 / 4
3 / 4
4 / 4
5 / 4
6 / 4
7 / 4
8 / 4
9 / 4
为什么它不承认4==4?你知道吗
更新:我尝试在str()中粘贴变量,以确保它们是相同的类型,但得到了相同的结果。以下是迄今为止的全部代码:
grid = [['1','2','3'],['4','5','6'],['7','8','9']]
plyr = ("X","O")
turn = 0
def drw_brd():
i = 1
f = turn
for spc in grid:
print " " + spc[0] + " | " + spc[1] + " | " + spc[2] + " "
if i<=2:
print "-----------"
i+=1
print''
print "Player %s (%s's) it's your turn!" %(str(f+1),plyr[turn])
place = input('Cell number to take:')
place_sym(int(place))
check_win()
def check_win():
switch_plyr()
def switch_plyr():
global turn
"""
if turn == 0:
turn = 1
else:
turn = 0
"""
if turn <= 0:
turn = 1
elif turn >= 1:
turn = 0
#print turn
drw_brd()
def place_sym(p):
global turn
global grid
global plyr
print plyr[turn]
for r in grid:
for c in r:
print str(c) + " / " + str(p)
if c == p:
print "Winner winner, chicken dinner!"
问题是p是一个字符串,c是一个整数。无论你在哪里得到你的p值(应该看起来像)
你应该把
这会解决你的问题
编辑
并非所有值都是同一类型的。Grid将数字定义为字符串
input对输入的数字运行eval,将其类型更改为int,这意味着对
p == c
的检查返回False
,因为它们是不同的类型相关问题 更多 >
编程相关推荐