棋盘上的Python皇后,我的程序出错了

2024-04-19 15:35:06 发布

您现在位置:Python中文网/ 问答频道 /正文

练习内容是,我应该询问8x8板上两个皇后的坐标。输出应该决定皇后是否可以互相攻击。(以下是国际象棋规则,仅供参考)

女王可以攻击8个方向,所以垂直和水平很容易得到的方式。然后我使用while循环作为一个可能的对角线方向,通过比较第一个皇后是“更高”还是“更低”,以及更靠近左侧还是右侧。但是,我的输出不起作用。你知道吗

输入示例:第一个坐标3 第二坐标5 7 输出应该是“no”,但是它返回“yes”。你知道吗

为什么它不能返回正确的输出?你知道吗

感谢您的帮助:)

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"

Tags: andnoinputrawif方向elseyes
1条回答
网友
1楼 · 发布于 2024-04-19 15:35:06

问题在于:

if queen1_1 == queen1_2:
print "Yes"

您将第一个皇后区的行与其列进行检查,而不是第二个皇后区的行。你知道吗

应该是

if queen1_1 == queen2_1:
print "Yes"

相关问题 更多 >