Python - 棋盘上的女王,在我的程序中出错

时间:2015-03-03 16:20:20

标签: python

练习上写着我应该在8x8板上要求两个女王的坐标。输出应确定女王是否可以相互攻击。 (遵循国际象棋规则)

女王可以在8个方向攻击,因此纵向和横向很容易被挡住。然后我通过比较第一个女王是“更高”还是“更低”并且向左或向右更多来使用while循环获得一个可能的对角线方向。但是我的输出不起作用。

示例输入:第一个坐标3 3                第二个坐标5 7 输出应该是“否”,但是它返回“是”。

为什么它无法返回正确的输出?

感谢您的帮助:)

queen1_1, queen1_2 = raw_input("Position of the first queen:").split()
queen2_1, queen2_2 = raw_input("Position of the second queen:").split()

queen1_1 = int(queen1_1)        
queen1_2 = int(queen1_2)
queen2_1 = int(queen2_1)        
queen2_2 = int(queen2_2)

if queen1_1 == queen1_2:
    print "Yes"
elif queen1_2 == queen2_2:
    print "Yes"
elif queen1_1 > queen2_1 and queen1_2 > queen2_2:
    while queen1_1 > 1 and queen1_2 > 1: 
        queen1_1 -= 1
        queen1_2 -= 1
        if queen1_1 == queen2_1 and queen1_2 == queen2_2:
            print "Yes"
    else: 
        print "No"
elif queen1_1 < queen2_1 and queen1_2 > queen2_2:
    while queen1_1 < 8 and queen1_2 > 1: 
        queen1_1 += 1
        queen1_2 -= 1
        if queen1_1 == queen2_1 and queen1_2 == queen2_2:
            print "Yes"
    else: 
        print "No"
elif queen1_1 > queen2_1 and queen1_2 < queen2_2:
    while queen1_1 < 1 and queen1_2 < 8: 
        queen1_1 -= 1
        queen1_2 += 1
        if queen1_1 == queen2_1 and queen1_2 == queen2_2:
            print "Yes"
    else: 
        print "No"
elif queen1_1 < queen2_1 and queen1_2 < queen2_2:
    while queen1_1 < 8 and queen1_2 < 8: 
        queen1_1 += 1
        queen1_2 += 1
        if queen1_1 == queen2_1 and queen1_2 == queen2_2:
            print "Yes"
    else: 
        print "No"

1 个答案:

答案 0 :(得分:0)

问题出在这里:

if queen1_1 == queen1_2:
print "Yes"

你正在检查第一个女王的行,而不是第二个女王的行。

应该是

if queen1_1 == queen2_1:
print "Yes"