欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python实现输入三角形边长自动作图求面积案例

程序员文章站 2023-01-25 21:37:23
三角形是个好东西,比如知道三条边边长,可以判断能不能组成三角形(两边之和大于第三边),如果可以就进一步计算其面积(海伦公式),最后还能把这个三角形画出来(余弦定理求角度),所以说这个作为一个编程题目用于教学是比较棒的。 在jupyterlab中运行效果如下: python源代码如下: # %matp ......

三角形是个好东西,比如知道三条边边长,可以判断能不能组成三角形(两边之和大于第三边),如果可以就进一步计算其面积(海伦公式),最后还能把这个三角形画出来(余弦定理求角度),所以说这个作为一个编程题目用于教学是比较棒的。

在jupyterlab中运行效果如下:

 python实现输入三角形边长自动作图求面积案例

python源代码如下:

# %matplotlib inline
# 建议在jupyterlab中运行

import math
import numpy as np
import matplotlib.pyplot as plt

def judge(lines):
 """判断是否能组成三角形"""
 flag = 0
 for i in range(3):
  l1 = lines.copy() # 要copy,不然会对源进行修改
  r = l1.pop(i) # r被取出,l1剩余俩
  if (r>=sum(l1)):
   print("输入的边长无法构成三角形")
   break
  else:
   flag += 1
   continue
 if flag==3:
  return true
 else:
  return false

def plot_triangle():
 lines = input("输入三条边长并用空格隔开:")
 params = lines.split(" ")
 lines = list(map(lambda x:float(x),params))
 if judge(lines):
  p = sum(lines)/2
  a,b,c = lines
  area = math.sqrt(p*(p-a)*(p-b)*(p-c))
  width = max(lines)
  height = area/width*2
  # 计算角度
  lines = [a,b,c]
  idx_a = np.argmax(lines)
  a = lines.pop(idx_a)
  # 最长边作为底部边长,最左侧与坐标轴原点对齐
  b,c = lines
  # 根据三边长求两个水平夹角角度
  cos_c = (a**2+b**2-c**2)/(2*a*b)
  cos_b = (a**2+c**2-b**2)/(2*a*c)
  # 根据余弦值求得正切值
  k_c = math.tan(math.acos(cos_c))
  k_b = math.tan(math.acos(cos_b))
  # 根据正切值和高,获得边长
  w_c = height/k_c
  w_b = height/k_b
  # 确定三个顶点的坐标
  loc_a = (0,height)
  loc_b = (-w_b,0)
  loc_c = (w_c,0)
  plt.figure(figsize=(4,3))
  plt.plot([0,-w_b,w_c,0],[height,0,0,height],"gray")
  plt.plot([0,0],[0,height],"r--")
  plt.text(1,height/2,"h=%.1f"%(height),color="blue",fontsize=12)
  ax = plt.gca()
  ax.set_aspect(1) # 保证两条坐标轴scale一致
  plt.axis('off') # 关闭显示直角坐标系
  plt.savefig("./trianle.png",dpi=300)
  print("三角形面积为:%.4f"%(area))

if __name__=="__main__":
 plot_triangle()

补充知识: python 三角形类,实现数据的输入、输出、周长、面积的计算

我就废话不多说了,还是直接看代码吧!

import math
class triangle:
  def __init__(self):
    a=0
    b=0
    c=0
  def add(self):
      self.a=int(input("输入第1条边的长度:"))
      self.b=int(input("输入第2条边的长度:"))
      self.c=int(input("输入第3条边的长度:"))
      while (self.a+self.b<=self.c):
        print("不符合三角边的规定,重新输入!")
        self.a=int(input("输入第1条边的长度:"))
        self.b=int(input("输入第2条边的长度:"))
        self.c=int(input("输入第3条边的长度:"))
  def out(self):
    print (self.a,self.b,self.c)
  def length(self):
    print (self.a+self.b+self.c)
  def area(self):
    print ((((a+b+c)/2)-a)*(((a+b+c)/2)-b)*(((a+b+c)/2)-c)*((a+b+c)/2))

t=triangle()
t.add()
t.out()
t.length()
t.area()

以上这篇python实现输入三角形边长自动作图求面积案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间:2020-04-12

python循环输出三角形图案的例子

我就废话不多说了,直接上代码吧! #copyright (c)2017, 东北大学软件学院学生 # all rightsreserved #文件名称:a.py #作 者:孔云 #问题描述:编写程序,使用双循环输出三角形图案. #问题分析:本程序由图形知,包含5行,即外层循环执行5次,每行内容的由三部分内容组成:空格.星号.回车,分别通过两个for循环和一条print语句实现.代码如下: for i in range(1,6): for j in range(5-i): print(" "

python打印直角三角形与等腰三角形实例代码

前言 本文通过示例给大家详细介绍了关于python打印三角形的相关,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1.直角三角形 #i控制行数j控制*的个数 for i in range(5): i += 1 for j in range(i): print('*', end='')#end=''输出空格 print() /2.等腰三角形 row = int(input('please enter a rows')) for i in range(row): for j in

python利用for循环打印星号三角形的案例

简单的for循环打印三角形 1,for循环方法实现星星三角 代码: for i in range(0,5): for j in range(i+1): if i == 4: print("* ",end="") continue if j == 0 or j == i: print("* ",end="") else: print(" ",end="") print() 2.实心三角:

python 已知三条边求三角形的角度案例

我就废话不多说了,还是直接看代码吧! import math a=1;//边1 b=1;//边2 c=math.sqrt(2);//边3 a=math.degrees(math.acos((a*a-b*b-c*c)/(-2*b*c)))//夹角1 b=math.degrees(math.acos((b*b-a*a-c*c)/(-2*a*c)))//夹角2 c=math.degrees(math.acos((c*c-a*a-b*b)/(-2*a*b)))//夹角3 print(a) print(b

python 叠加等边三角形的绘制的实现

python语言程序设计基础 习题2.5 import turtle def drawtriangle(num,len,flag):#flag用来调整画三角形的方向 flag*=-1 len/=2 if(num==1): if(flag==1): turtle.left(60) turtle.fd(len) turtle.right(120) turtle.fd(len) turtle.right(120) turtle.fd(len) turtle.left(120) else: turtle

如何使用python 打印各种三角形

直角三角形 rows = int(input('输入列数:')) for i in range(1, rows): print('*' * i) for i in range(1, rows): for j in range(i): print("*", end="") print("") 等腰直角三角形 rows = int(input('输入列数:')) for i in range(1, rows): print(' * ' * i) fo

python判断三段线能否构成三角形的代码

我就废话不多说了,还是直接看代码吧! #!/usr/bin/env python3 #coding = utf-8 def is_triangle(a=0, b=0, c=0): #abc 三条边长 a = [a,b,c] a.sort() #升序排序 if a[2] < a[1] +a[0]: print("{} is triangle".format(a)) else: print("不构成三角") def triangle(f): a = float(i

python3如何判断三角形的类型

# 判断三角形类型 def triangle(a,b,c): if a>0 and b>0 and c>0: if a+b>c and b+c>a and a+c>b: if a == b and b == c: return ("这是等边三角形") elif a == b or b == c or c == a: return("这是等腰三角形") else: return("这是不规则三角形") elif

c#判断三角形的类型

 

题目描述: 输入三角形的三条边长,判断是否能构成一个三角形(不考虑退化三角形,即面积为零的三角形),是什么样的三角形(直角.锐角.钝角.等边.等腰). 函数声明为:byte gettriangletype(int,int,int) 1. 如何用一个byte来表示各种输出情况? 2. 如果你是一名测试工程师,应该如何写测试用例来完成功能测试呢? 题目解析: 对于如何用一个byte表示各种输出情况,不是很清楚,有待研究. 下面的程序我只是实现了功能,并没有按照给定的函数声明的格式完成,大家可以参考参

js判断当前浏览器类型,判断ie浏览器方法

最短ie判断方法,原文地址: http://www.jb51.net/article/23621.htm 判断ie浏览器最短方法:var isie = !-[1,] 原理:[1,]在标准浏览器中返回"1",相当于调用[1,].tostring(),在ie中返回"1,"在这个时候对返回值使用负号强制转换为数字时,标准浏览器返回1,ie则返回nan,再对1和nan取反时,标准浏览器返回false,ie返回true. js判断浏览器类型 原文基本上没有什么问题,但他的判断

js判断主流浏览器类型和版本号的简单实现代码

如今的互联网中,浏览器可以说是太多太多了,但是大部分都是换壳不换心,基本上主流的浏览器还是火狐,谷歌,ie,safrai这几种比较常见,所以在我们的开发中,有时候需要遇到判断用户正在使用什么浏览器以及使用的版本是多少,并根据返回值,给予一定的提示,下面,我就简单的介绍一种判断用户浏览器的使用情况的代码. var distinguishbrowser= function browserinfo() { var browser = { // ie浏览器 msie: false, // 谷歌浏览器 c

基于jquery1.9版本如何判断浏览器版本类型

在jquery.1.9以前的版本,可以使用$.browser很轻松的判断浏览器的类型和版本,但是在1.9中和以后的版本中,$.browser已经被删除,下面就介绍一下如何实现此功能,希望能够给需要的朋友带来帮助. 一.自定义代码: $.browser.mozilla = /firefox/.test(navigator.useragent.tolowercase()); $.browser.webkit = /webkit/.test(navigator.useragent.tolowercas

ios判断运营商类型的实现方法

一.获取运营类型 1.需要导入两个头文件 #import <coretelephony/ctcarrier.h> #import <coretelephony/cttelephonynetworkinfo.h> 2.判断类型 // 获取运营商类型 + (ssoperatorstype)getoperatorstype{ cttelephonynetworkinfo *telephonyinfo = [[cttelephonynetworkinfo alloc] init]; ctc

使用php判断浏览器的类型和语言的函数代码

我们经常看到有一些网站上面会显示出你目前使用的浏览器类型和使用的语言,比如显示的是:您使用的浏览器为 ie6,繁体字.看起来是不是很炫. 其实这样的功能不难实现,无非就是判断浏览器的类型和语言,如果用js来做应该很简单,这里我们看看用php来怎么实现这样的功能,既然是在做判断,就可以用php的条件语句if..else来判断实现. 判断浏览器类型: <?php echo $_server["http_user_agent"]; ?> 判断浏览器语言: <?php ech

js判断undefined变量类型使用typeof

js判断undefined变量类型直接用 复制代码 代码如下: if(mydata=='undefined'){ alert("未定义"); } 这是个很低级的错误,这么使: 复制代码 代码如下: if(typeof(mydata)=='undefined'){ alert("未定义"); }

jsp中实现判断客户端手机类型并跳转到app下载页面

判断客户端手机类型,并跳转到相应的app下载页面 实现的原理,是检测浏览器的 user-agent 这个header,然后根据正则表达式来确定客户端类型. 如果都不匹配,fallback回退策略是显示对应的页面,让用户自己选择. 适合采用二维码扫描方式下载app: jsp版本的代码如下所示:其他服务端版本请百度搜索. <%@page import="java.util.regex.matcher"%> <%@page import="java.util.re

两款js脚本判断手机浏览器类型跳转wap手机网站

随着移动设备的普及,企业的网络宣传已经不能局限在pc端,而需要同时在移动端有所建树.对于公司网站来说,以前都是做的pc端的,当然手机等移动端也可以访问,但是用户体验肯定不如完全适合的手机端来的方便.我们在给自己的网站做了wap手机网站之后,如果有用户通过手机访问我们的企业*域名网站,那就判断跳转到专为的wap网站. 这里老左整理到目前自己在使用的2种js脚本,因为之前一直有朋友跟我要,所以这里分享出来. 第一种:直接js脚本 <script type="text/javascript&q

用javascript判断css浏览器类型前缀的两种方法

 

不管我们对浏览器类型前缀有多么的讨厌,我们都不得不每天面对它,否者有些东西不能正常工作.这些前缀的用法有两种:在css里(例如"-moz-")和在js里.有一个神奇的 x-tag 项目里有一段很聪明的javascript脚本,可以用来判断当前使用的是什么前缀--让我来展示它是如何工作的! 比如 css 前缀,ie 的是 "-ms-",旧版 opera 的是 "-o-",firefox 的是 "-moz-",safari/chr