题目 1471:【蓝桥杯】【入门题】【基础练习VIP】矩形面积交
题目 1471:矩形面积交
蓝桥杯刷题群已成立,微信后台回复【蓝桥杯】,即可进入。
如果加入了之前的社群不需要重复加入。
时间限制: 1Sec 内存限制: 128MB
1. 题目描述
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
2. 输入
输入仅包含两行,每行描述一个矩形。
在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
3. 输出
输出仅包含一个实数,为交的面积,保留到小数后两位。
4. 样例输入
1 1 3 3
2 2 4 4
5. 样例输出
1.00
6. 解决方案
思路:
要对矩形做规范化处理。即左上角的坐标要小于右下角的坐标。 根据不同情况分别确定相交矩形左右上下,四条边的 x
,y
坐标。根据坐标确定矩形的长与宽。 求出矩形的面积。
「Python语言」
while True:
try:
a = list(map(float, input().strip().split()))
b = list(map(float, input().strip().split()))
# 对矩形做规范化处理
a = [min(a[0], a[2]), min(a[1], a[3]), max(a[0], a[2]), max(a[1], a[3])]
b = [min(b[0], b[2]), min(b[1], b[3]), max(b[0], b[2]), max(b[1], b[3])]
# 确定每条边的坐标
xl = max(a[0], b[0])
xr = min(a[2], b[2])
yup = max(a[1], b[1])
ydown = min(a[3], b[3])
# 确定矩阵的长与宽
w = xr - xl
h = ydown - yup
# 求出矩形的面积
if w > 0 and h > 0:
print("%.2f" % (w * h))
else:
print("0.00")
except:
break
知识点:条件语句
「1. if 语句」
if expression:
expr_true_suite
if 语句的 expr_true_suite
代码块只有当条件表达式expression
结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句。单个 if 语句中的 expression
条件表达式可以通过布尔操作符and
,or
和not
实现多重条件判断。
【例子】
if 2 > 1 and not 2 > 3:
print('Correct Judgement!')
# Correct Judgement!
「2. if - else 语句」
if expression:
expr_true_suite
else:
expr_false_suite
Python 提供与 if 搭配使用的 else,如果 if 语句的条件表达式结果布尔值为假,那么程序将执行 else 语句后的代码。
【例子】
temp = input("猜一猜小姐姐想的是哪个数字?")
# input 函数将接收的任何数据类型都默认为 str。
guess = int(temp)
if guess == 666:
print("你太了解小姐姐的心思了!")
print("哼,猜对也没有奖励!")
else:
print("猜错了,小姐姐现在心里想的是666!")
print("游戏结束,不玩儿啦!")
if
语句支持嵌套,即在一个if
语句中嵌入另一个if
语句,从而构成不同层次的选择结构。
【例子】Python 使用缩进而不是大括号来标记代码块边界,因此要特别注意else
的悬挂问题。
hi = 6
if hi > 2:
if hi > 7:
print('好棒!好棒!')
else:
print('切~')
# 无输出
【例子】
temp = input("猜一猜小姐姐想的是哪个数字?")
guess = int(temp)
if guess > 8:
print("大了,大了")
else:
if guess == 8:
print("你太了解小姐姐的心思了!")
print("哼,猜对也没有奖励!")
else:
print("小了,小了")
print("游戏结束,不玩儿啦!")
「3. if - elif - else 语句」
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
.
.
elif expressionN:
exprN_true_suite
else:
expr_false_suite
elif 语句即为 else if,用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码。
【例子】
temp = input('请输入成绩:')
source = int(temp)
if 100 >= source >= 90:
print('A')
elif 90 > source >= 80:
print('B')
elif 80 > source >= 60:
print('C')
elif 60 > source >= 0:
print('D')
else:
print('输入错误!')
「4. assert 关键词」
assert
这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError
的异常。
【例子】
my_list = ['lsgogroup']
my_list.pop(0)
assert len(my_list) > 0
# AssertionError
【例子】在进行单元测试时,可以用来在程序中置入检查点,只有条件为 True 才能让程序正常工作。
assert 3 > 7
# AssertionError