python编程<十>

学习目标:

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= " ")

运行结果演示

在这里插入图片描述


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值