练习内容:判断多个坐标是否在同一条直线上

判断多个坐标是否在同一条直线上|Python练习系列[13]_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

print('请输入几个点的横纵坐标,程序将会返回这几个点是否在同一条直线上')
def coor_nums():#获得每个值的横纵坐标int_list=[]#初始化坐标列表wrong_list=[]#初始化错误列表judgement=''#判断是否需要修正坐标值while True:nums=input('应以x1 y1 x2 y2...的格式输入:n')num_list=nums.split()if len(num_list)%2!=0:#如果输入的坐标长度不是偶数 说明输入错误print('请输入每个点的横纵坐标')continuefor n in num_list:#对输入的每个值try:num=float(n)int_list.append(num)#尝试将输入的值转为浮点类型添加到坐标列表中except Exception as e:#如果发生异常print('你输入的第'+str(num_list.index(n)+1)+'个值为:'+n+',它不是数字 请按照要求输入')#提示修改wrong_list.append([num_list.index(n),n])#将错误坐标值的索引和错误坐标值都添加到错误列表int_list.append(n)#同时也将错误坐标值添加到坐标列表 便于修改judgement='need'#判断为need 即需要修改return int_list,wrong_list,judgement
int_list,wrong_list,judgement=coor_nums()
def adjust(wrong_list):#调整错误列表并且修改对应坐标列表right_list=[]#初始化修改后的列表for wrong_num in wrong_list:#对于每个错误值while True:#循环修改直到修改正确right_num_input=input('正在修改第{}个值,原值为:{},现值为:n'.format(wrong_num[0]+1,wrong_num[1]))try:right_num=float(right_num_input)right_list.append([wrong_num[0],right_num])#将修改值添加到正确列表breakexcept Exception as e:print('修改值仍然错误,请再次修改')continuereturn right_list
def k_line_judge(int_list,wrong_list,judgement):#判断输入点是否在同一条直线if judgement=='need':#如果为need则需要调整初次输入的坐标值right_list=adjust(wrong_list)for n in right_list:int_list[n[0]]=n[1]#把每个修改后的值赋予坐标列表point_judge=list(set(int_list))if len(point_judge)==1:#如果输入的每个值相同 说明是同一个点return print('所有点是同一个点 为({},{})'.format(point_judge[0],point_judge[0]))k_list=[]#初始化直线斜率列表for n in range(3,len(int_list),2):#处理坐标列表try:k=(int_list[n]-int_list[n-2])/(int_list[n-1]-int_list[n-3])#斜率公式k=(y2-y1)/(x2-x1)k_list.append(k)#尝试向斜率列表中增加每两个点的斜率except ZeroDivisionError as e:#如果出现了x2-x1=0的情况 暂时先略过passif n==len(int_list)-1 and len(k_list)==0:#如果循环到最后 直线斜率列表长度仍然为0return print('所有点在直线x={}上'.format(int_list[0]))#说明输入的坐标都在直线x=x1上set_k_list=list(set(k_list))if len(set_k_list)==1 and set_k_list[0]==0:#如果直线斜率列表长度为1 并且k=0 说明输入坐标都在y=y1上print('所有点在直线y={}上'.format(int_list[1]))elif len(set_k_list)==1 and set_k_list[0]!=0:#如果直线斜率列表长度为1 并且k不等于0line_k=set_k_list[0]#说明在一条y=kx+b的直线上line_b=int_list[1]-int_list[0]*line_k#b=y-kxif float(line_b)<=0:#分为b>0和b<=0两种打印情况print('所有点在直线y={}x{}上'.format(round(line_k,5),line_b))else:print('所有点在直线y={}x+{}上'.format(round(line_k,5),line_b))elif len(set_k_list)!=1:#如果斜率列表长度不为1说明不在同一条直线上print('所有点不在同一条直线上')
k_line_judge(int_list,wrong_list,judgement)

python 判断是否有余数_判断多个坐标是否在同一条直线上|Python练习系列[13]相关推荐

  1. python输入多个坐标点_判断多个坐标是否在同一条直线上|Python练习系列[13]

    练习内容:判断多个坐标是否在同一条直线上 完整代码和注释如下 print('请输入几个点的横纵坐标,程序将会返回这几个点是否在同一条直线上') def coor_nums():#获得每个值的横纵坐标 ...

  2. [leetcode] Max Points on a Line 判断最多有多少个点在同一条直线上

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...

  3. c++图形中如何判断鼠标点击在一条直线上_中考数学常考题型精讲精练系列:函数图象上点的存在性问题中的距离与面积...

    函数图象上点的存在性问题中的距离与面积(下)第1段 函数图象上点的存在性问题中的距离与面积(下)第2,3段 函数图象上点的存在性问题中的距离与面积(下)第4段 判断函数的图像是中考的重要考点,主要有以 ...

  4. z变换判断稳定性和因果性_判断因果性.PPT

    判断因果性 10.7离散时间系统系统函数与Z域分析 一.单位样值响应与系统函数 1.由零极点分布确定单位样值响应 由零极点分布确定单位样值响应(续) 利用z-s平面的映射关系 10.8 系统函数的方框 ...

  5. php 判断来源 微信客户端_判断浏览器HTTP_USER_AGENT类型之微信浏览器判断

    在微信公众平台的开发过程中,我们有时需要开发网页并判断是否是是来自微信浏览器访问,本文介绍如何做出这一判断. 在学习这篇之前,应该先了解一下PHP 的 $_SERVER变量. 下面我们开始讲解具体方法 ...

  6. python对整数进行因数分解_浅谈将一个正整数分解质因数的逻辑思维和Python开发设计...

    今天讨论的是如何将一个正整数分解质因数.例如:输入36,打印出36=2*2*3*3. 1.首先要清晰两个概念,要知道什么是质数,如何进行分解质因数?质数是指在大于1的自然数中,除了1和它本身以外不再有 ...

  7. python分析人口出生率代码_身份证号码各位数字的含义以及计算校验位的python代码...

    公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 其中前六位是地址码,通过百度百科我们很容易就 ...

  8. python编程对电脑要求_什么是集成开发环境和代码编辑器?优秀Python编程环境的要求(4)...

    科学家将甚大望远镜和斯皮策空间望远镜的数据进行能量分布分析,发现了在西北向旋臂末端存在一些年轻恒星,越往星系中央,恒星的年龄越大.最新版本的komodo提供了更多的功能与pycharm.pydev和w ...

  9. 怎么把python解释器配置在pycharm中_在PyCharm中配置项目(三):配置Python解释器...

    PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具.此外,该IDE提供了一些高级功能,以用于Django框架下的专业Web开发. PyCha ...

最新文章

  1. 剑指offer:面试题33. 二叉搜索树的后序遍历序列
  2. java调用微信扫一扫
  3. Python内置函数——eval、exec、compile
  4. Android微信视频播放填坑指南
  5. python外星人入侵游戏run_game报错_《python编程从入门到实践》书中的外星人入侵小游戏报错...
  6. 腾讯副总裁程武取代吴文辉接管阅文集团 后者开盘涨近4%
  7. 如何导入gradle版本不同的Android项目
  8. 单行溢出隐藏没生效_至今没搞懂,为什么这个缸这么火?
  9. element-ui表单验证时需要number类型
  10. java玫瑰花代码_程序员最美的情人节玫瑰花,JAVA代码实现的3D玫瑰噢
  11. (十六)51单片机——红外遥控
  12. 交换机中tag、untag的理解
  13. 固化来自哈佛,创新来自斯坦福
  14. IMO 2017 T4解答
  15. android 记录美剧观看进度,[推荐]i看美剧应用:美剧播出、新闻发生提醒直接推送到手机...
  16. 征信篇: 如何保护个人隐私,防止征信受损?
  17. Bugku:简单套娃
  18. 川崎机器人总线通信_川崎机器人Profinet从站设定
  19. python怎样设置列表翻译_翻译:《实用的Python编程》01_05_Lists
  20. 《Fast User-Guided Video Object Segmentation by Interaction-and-Propagation Networks》论文笔记

热门文章

  1. linux的用户及权限管理,用户及权限管理
  2. 什么是spark的惰性计算?有什么优势?_spark——spark中常说RDD,究竟RDD是什么?
  3. 东京组委会“友情提示”:奖牌是用回收金属做的不能吃!别咬了
  4. ​迷“铺地砖”的数学家
  5. 【福利】周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题...
  6. 袁亚湘:愿为数学做更多
  7. 斯坦福大学教育学院院长:学习本身就是一门学问
  8. 联邦学习--数据攻击(2)
  9. (pytorch-深度学习)深度循环神经网络
  10. Hive的UDF概念