练习内容是,我应该询问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"
问题在于:
您将第一个皇后区的行与其列进行检查,而不是第二个皇后区的行。你知道吗
应该是
相关问题 更多 >
编程相关推荐