python整数值相等,但if语句不执行任何操作

2024-06-09 14:15:02 发布

您现在位置: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!"

Tags: in列表forifdefplace数字语句
1条回答
网友
1楼 · 发布于 2024-06-09 14:15:02

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

p = input("enter a number")

你应该把

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

这会解决你的问题

编辑

并非所有值都是同一类型的。Grid将数字定义为字符串

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

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

相关问题 更多 >