学习目标:
1.Python实现求取两个相交矩形的面积;
2.编写程序实现“剪刀,石头,布”游戏;
3.求解方程;
4.打印前十名。
学习内容:
示例一
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
输入仅包含两行,每行描述一个矩形。 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入:
1 1 3 3
2 2 4 4
样例输出: 1.00
解析
代码演示
A_x1, A_y1, A_x2, A_y2 = input().split()
B_x1, B_y1, B_x2, B_y2 = input().split()
l = abs(int(A_x2) - int(B_x1))
w = abs(int(A_y2) - int(B_y1))
s = l*w
print("{:.2f}".format(s))
运行结果演示
示例二
编写程序实现“剪刀,石头,布”游戏。在这个游戏中,两个人同时说“剪刀”,“石头”或“布”,压过另一方的为胜者。规则是:“布”胜过“石头”,“石头”胜过“剪刀”,“剪刀”胜过“布”。要求:选择结构中使用枚举类型,结果的输出也使用枚举类型表示。
输入:两个数,范围为{0,1,2},用空格隔开。0表示石头,1表示布,2表示剪刀。这两个数分别表示两个人所说的物品。
输出:如果前者赢,输出1。如果后者赢,输出-1。如果是平局,输出0。
代码演示:
a,b=input().split()
a = int(a)
b = int(b)
if (a==b):
print(0)
elif((a==0 and b==2) or (a==1 and b==0) or (a==2 and b==1)):
print(1)
elif((a==0 and b==1) or (a==1 and b==2) or (a==2 and b==0)):
print(-1)
运行结果演示
示例三
求解方程ax**2+bx+c=0的根。要求a, b, c由用户输入,并且可以为任意实数。
输入:输入只有一行,包括三个系数,之间用空格格开。
输出:输出只有一行,包括两个根,大根在前,小根在后,无需考虑特殊情况,保留小数点后两位。
代码演示
a, b, c = input().split()
a = eval(a)
b = eval(b)
c = eval(c)
deta = b**2 -4*a*c
if deta >= 0:
x1 = (-b - pow(deta, 0.5)) / (2 * a)
x2 = (-b + pow(deta, 0.5)) / (2 * a)
if x1 >= x2:
print("{:.2f} {:.2f}".format(x1, x2))
else:
print("{:.2f} {:.2f}".format(x2, x1))
运行结果演示
示例四
现在我们有n个数据,请按从大到小的顺序,输出前10个名数据。
输入:
第一行一个整数n,表示要对多少个数据
第二行有n个整数,中间用空格分隔。表示n个数据。
输出:
一行,按从大到小排列的前10个数据,每个数据之间用一个空格隔开。
解析
掌握排序的函数,了解sort()与sorted()的区别:
list.sort():对数列按照从小到大的顺序进行排列,可以反序排列list.sort(reverse=True).这个排序是永久的,已经对原数列产生影响力,如果想打印排序的序列,直接print(list)即可。
new_list = sorted(list):对数列按照从小到大的顺序进行排列,可以反序排列new_list=sorted(list,reverse=True),这个排序是暂时的,原数列list并没有发生变化。如果想打印出排序的数列,就要赋值给另一个变量,直接打印另一个变量。
代码演示
N = input()
nums = input().split(" ")
#sorted(nums, reverse = True) 并不影响原数列的顺序
for i in range(len(nums)):
nums[i] = int(nums[i])
nums.sort(reverse = True)
#print(nums)
if int(N) == len(nums):
for i in range(10):
print(nums[i], end= " ")