天天看点

C++求复数的角度_python实现输入三角形边长自动作图求面积案例

C++求复数的角度_python实现输入三角形边长自动作图求面积案例

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

在jupyterlab中运行效果如下:

C++求复数的角度_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浏览器方法

上一篇: whois查询

继续阅读