练习上写着我应该在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"
答案 0 :(得分:0)
问题出在这里:
if queen1_1 == queen1_2:
print "Yes"
你正在检查第一个女王的行,而不是第二个女王的行。
应该是
if queen1_1 == queen2_1:
print "Yes"