python整数值相等但if语句什么都不做

时间:2018-01-03 16:57:12

标签: python

我上网学习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!"

1 个答案:

答案 0 :(得分:1)

问题是p是一个字符串,c是一个整数。无论你在哪里获得p的价值(应该看起来像)

p = input("enter a number")

你应该把

p = int(input("enter a number"))

这应该可以解决您的问题

修改

并非所有值都属于同一类型。网格将数字定义为字符串,

grid = [['1','2','3'],['4','5','6'],['7','8','9']]

并且输入在输入的数字上运行eval,将其类型更改为int,这意味着检查p == c返回False,因为它们是不同的类型