当前位置:   article > 正文

2021年第十二届蓝桥杯省赛Python组(真题+解析+代码):直线_蓝桥杯python组直线

蓝桥杯python组直线

1 真题


2 解析

难度系数:⭐⭐

考察题型:枚举  数论

涉及知识点: 集合docker=set()  斜率截距公式(k,b)

思路分析:

一条普普通通的直线,竟然能变出这么多花样?直线,接招!( •̀ ω •́ )✧

首先创建二维列表存放坐标系,然后二重循环遍历,给每个坐标点赋初值。

因为要统计不同的直线,所以用直线的性质:斜率截距 来区分,并存放到集合容器里,

最后一点小细节,当斜率不存在时,k会报错,

所以单独计算,最后直接加上20条垂直x轴的直线。


3 代码

  1. #直线
  2. points=[[x,y] for x in range(20) for y in range(21)] #创建二维列表:代表xy坐标系
  3. docker=set() #创建集合属性的容器:因为集合里的元素不会重复
  4. for i in points: #二重循环遍历每个坐标
  5. x1,y1=i[0],i[1] #注意书写格式:a,b=c,d
  6. for j in points:
  7. x2,y2=j[0],j[1]
  8. if x1==x2: #特殊情况:直线垂直时斜率不存在,先跳过最后计算
  9. continue
  10. k=(y2-y1)/(x2-x1) #斜率公式
  11. b=(x2*y1-x1*y2)/(x2-x1) #截距公式
  12. if (k,b) not in docker: #存入容器里没有的(斜率,截距)对
  13. docker.add((k,b))
  14. print(len(docker)+20) #输出结果:容器的长度40237+斜率不存在的20种情况=40257

                


   

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/446797
推荐阅读
相关标签