if测试列表成员资格的语句条件无法正常工作

时间:2017-07-27 13:56:33

标签: python if-statement chess statements

我写了一个简单的脚本,但输出不正确。你能给我一些建议吗? 解决它?问题是棋盘上的白色或黑色方块: 如果我使用带有字符串'd'和int(4)的def,它将返回白色,但它有 是黑色的?

def in_white(letter,integer):

    list_letters_1 = ['a','c','e','g']
    list_letters_2 = ['b','d','f','h']

    list_numbers_1 = [1,3,5,7]
    list_numbers_2 = [2,4,6,8]
    print(list_numbers_1)

    if str(letter) in list_letters_1 and int(integer) in list_numbers_1:
        print("black")
    elif str(letter) in list_letters_2 and int(integer) is list_numbers_2:
        print("black")
    else:
        print("white")

in_white('d',4)

3 个答案:

答案 0 :(得分:5)

这句话是罪魁祸首:

elif str(letter) in list_letters_2 and int(integer) is list_numbers_2:
# ___________________________________________________^

应该是in,而不是is。您应该知道in测试成员身份,而is测试参考等同性。两者不一样。

答案 1 :(得分:0)

elif str(letter) in list_letters_2 and int(integer) is list_numbers_2:的行 - 最后一部分应为int(integer) in list_numbers_2

答案 2 :(得分:0)

您的in测试中有拼写错误。这一行:

elif str(letter) in list_letters_2 and int(integer) is list_numbers_2:

是有效的Python,但不是你的意思。它应该是:

elif str(letter) in list_letters_2 and int(integer) in list_numbers_2:

is测试始终为False