首页 > 编程语言 >Python工程数学2程序开胃菜(上)

Python工程数学2程序开胃菜(上)

时间:2024-10-01 08:49:47浏览次数:7  
标签:code return Python color 数学 开胃菜 print coded def

2 数学程序开胃菜

在上一章中( https://mp.weixin.qq.com/s/kKenXcEXIeLd_u_2kymF8A ),我们介绍了python的IDE;用numpy实现向量计算;用Matplotlib绘图;用sympy实现微积分和求导;用SciPy实现积分;用VPython实现弹跳球动画。

在本章中,您将了解 Python 命令式编程风格的线性程序结构以及分支和重复结构。面向对象编程和函数式编程的示例描述了使用 Python 编程的更多方法。

使用计算机解决的问题可以通过编程语言以多种方式建模和结构化。在应用计算机科学领域,命令式(过程式)编程、面向对象编程 (OOP) 和函数式编程风格已经确立。Python 支持所有这三种编程风格。
问题的解决方案也与逻辑条件相关联: 预期情况是否适用?此外,根据问题的不同,必须重复执行相同的任务,例如计算数学函数的值表。与其他过程式编程语言一样,Python 支持线性程序结构以及分支和重复结构。

2.1 线性程序结构

2.1.1 线性程序

  • 实例:计算电流

U=230
R=11.8
I=U/R
b="The current is:"
print(b, I, " A") 

执行:

The current is: 19.491525423728813  A

python的整数是没有大小限制的,浮点数的限制如下:

>>> import sys
>>> print(sys.float_info)
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
  • 实例:计算串联电路的功率
#02_linear2.py
U = 230
R1, R2, R3=0.12, 0.52, 228
Rg = R1 + R2 + R3
I= U/Rg
P1 = R1 * I**2
P2 = R2 * I**2
P3 = R3 * I**2
print("Current I={0:6.3f} A " .format(I))
print("P1={0:3.2f} W, P2={1:3.2f} W, P3={2:3.2f} W".format(P1,P2,P3))

执行:

Current I= 1.006 A 
P1=0.12 W, P2=0.53 W, P3=230.72 W
  • 实例:通过使用内置输入函数获取数值:
#02_linear2.py
U = 230
R1, R2, R3=0.12, 0.52, 228
Rg = R1 + R2 + R3
I= U/Rg
P1 = R1 * I**2
P2 = R2 * I**2
P3 = R3 * I**2
print("Current I={0:6.3f} A " .format(I))
print("P1={0:3.2f} W, P2={1:3.2f} W, P3={2:3.2f} W".format(P1,P2,P3))

执行:

---Input---
Voltage: 220
Resistance: 34

---Output---
Current   6.47 A
Power 1423.53 W

---Input---
Voltage:

参考资料

2.2 函数

  • 实例:使用函数来计算电流、电功率、电功和电能成本:
#04_function1.py
U, R = 230, 460
t = 8
price = 0.3

def current():
    I = U / R
    print("Current: ", I, " A")

def power():
    P = U**2 / R
    print("Power : ", P, " W")

def work():
    P = U**2  /R
    W = P * t
    print("Work: ", W, " Wh")

def cost():
    I = U / R
    W = U * I * t
    c = W * price / 1000.0
    print("Cost: ", c, " Euro")

current()
power()
work()
cost() 

执行:

Current:  0.5  A
Power :  115.0  W
Work:  920.0  Wh
Cost:  0.276  Euro

argument是调用函数时传递的值。该值被分配给函数中的指定参数。parameter是函数中使用的名称。

  • 实例:带返回值的函数
#05_function2.py
def current(U, R):
    return U / R

def power(U, R):
    return U**2/R

def work(U, R, t):
    P = U**2 / R
    W = P*t
    return W

def cost(U, R, t, price):
    I = U / R
    W = U * I * t
    c =W * price / 1000.0
    return c

Uq = 230    #V
RLoad = 23 #ohms
tn = 8      #h, hours
price_actual = 0.3 #euro
print("Current: ", current(Uq, RLoad), " A")
print("Power  : ", power(Uq, RLoad), " W")
print("Work   : ", work(Uq, RLoad,tn), " Wh")
print("Cost   : ", cost(Uq, RLoad,tn,price_actual), " euros") 

执行:

Current:  10.0  A
Power  :  2300.0  W
Work   :  18400.0  Wh
Cost   :  5.52  euros
  • 实例:带有多个返回值的函数:计算出体积、质量、惯性矩和加速力矩

与其他编程语言不同,Python 也允许返回多个值。我们来看一个直径为 1 分米、长度为 10 分米的实心钢圆柱体的例子。只需一个函数,就可以计算出体积、质量、惯性矩和加速力矩。所有四个值都应通过返回语句返回。

加速力矩 Mb 与角加速度 α 和惯性矩 J 成比例增加:

圆柱体的惯性矩 J 与质量m成正比,与半径 r 的平方成正比:

质量m由圆柱体的体积 V 和密度计算得出:

要计算体积 V,需要圆柱体的直径 d 和长度 l:

要完成这项任务,必须在 Python 开发环境的文本编辑器中按照语法规则以相反的顺序输入公式。

#06_function3.py
rho = 7.85   #kg/dm^3, density for steel
alpha = 1.2  #1/s^2, angular acceleration
g = 3        #accuracy

def cylinder(d,l):
    V=round(0.785*d**2*l,g)
    m=round(rho*V,g)
    J=round(0.5*m*(d/2/10)**2,g)
    Mb=round(alpha*J,g)
    return (V,m,J,Mb)
    #return V,m,J,Mb
    #return [V,m,J,Mb]

d1=1  #dm
l1=10 #dm
T=cylinder(d1, l1)
print("Cylinder data: ", T)
print("Volume:             ", T[0]," dm^3")
print("Mass:               ", T[1]," kg")
print("Moment of inertia:  ", T[2]," kgm^2")
print("Acceleration torque:", T[3]," Nm") 

执行:

Cylinder data:  (7.85, 61.622, 0.077, 0.092)
Volume:              7.85  dm^3
Mass:                61.622  kg
Moment of inertia:   0.077  kgm^2
Acceleration torque: 0.092  Nm
  • 实例:函数嵌套调用:
#07_function4.py
rho=7.85    #kg/dm^3, density of steel

def volume(d,l):
    return 0.785*d**2*l

def mass(d,l):
    return rho*volume(d,l)

def moment_of_inertia(d,l):
    return 0.5*mass(d,l)*(d/2/10)**2

def acceleration_torque(d,l,alpha):
    return alpha*moment_of_inertia(d,l)

d1=1 #dm
l1=10 #dm
alpha1=1.2 #1/s^2, angular acceleration
V=volume(d1,l1)
m=mass(d1,l1)
J=moment_of_inertia(d1,l1)
Mb=acceleration_torque(d1,l1,alpha1)
print("Volume: ", V, " dm^3")
print("Mass: ", m, " kg")
print("moment of inertia: ", J, " kgm^2")
print("Acceleration torque: ", Mb, " Nm")

执行:

Volume:  7.8500000000000005  dm^3
Mass:  61.6225  kg
moment of inertia:  0.07702812500000002  kgm^2
Acceleration torque:  0.09243375000000002  Nm

2.3 分支结构

  • 实例:解一元二次方程


根下的表达式也可以取负值。当出现这种情况时,方程将无法在实数空间内求解。因此,程序必须通过检查 D 是否≥ 0 来捕捉这种情况。对于要解决的问题,可以创建如图 2.3 所示的结构图。

#08_branch1.py
import math as m
p=-8.
q=7.
D=(p/2)**2 - q
if D >= 0:
    x1 = -p/2 + m.sqrt(D)
    x2 = -p/2 - m.sqrt(D)
    print("x1 =",x1,"\nx2 =",x2)
    print("p =",-(x1+x2),"\nq =",x1*x2)
else:
    print("The equation cannot be solved!")

执行:

x1 = 7.0 
x2 = 1.0
p = -8.0 
q = 7.0
  • 实例:多重选择

#09_multiple_selection1.py
color=["black", "brown", "red", "orange", "yellow",
       "\ngreen","blue","purple","gray","white"]
code="yellow"       #input
if code==color[0]:
    print("The color black is coded as 0.")
elif code==color[1]:
    print("The color brown is coded as 1.")
elif code==color[2]:
    print("The color red is coded as 2.")
elif code==color[3]:
    print("The color orange is coded as 3.")
elif code==color[4]:
    print("The color yellow is coded as 4.")
elif code==color[5]:
    print("The color green is coded as 5.")
elif code==color[6]:
    print("The color blue is coded as 6.")
elif code==color[7]:
    print("The color purple is coded as 7.")
elif code==color[8]:
    print("The color gray is coded as 8.")
elif code==color[9]:
    print("The color white is coded as 9.")

执行:

The color yellow is coded as 4.
  • 实例:电费费率
#10_multiple_selection2.py
rate1,rate2,rate3=0.3,0.25,0.2 #euros
consumption=5500 #kWh

if 0 < consumption<= 5000:
    print("Amount for rate1:",consumption*rate1, "euros")
elif 5000 < consumption <= 10000:
    print("Amount for rate2:",consumption*rate2, "euros")
elif 10000 < consumption <= 30000:
    print("Amount for rate3:",consumption*rate3, "euros")
else:
    print("industry_rate!")

执行:
```python
Amount for rate2: 1375.0 euros

标签:code,return,Python,color,数学,开胃菜,print,coded,def
From: https://www.cnblogs.com/testing-/p/18433830

相关文章

  • python tkinter 开发测试
    fromtkinterimport*defname_1_cs():ydm_1_2.place_forget()ydmwz_1_2.place_forget()ydmwz_1_2_B1.place_forget()xz_1_1.place_forget()ydmwz_1_2_B2.place_forget()xz_1_2.place_forget()mulu_1.place_forget()mulu_2.plac......
  • Python函数进阶:让你的代码更优雅的秘密武器
    引言你是否曾在编写Python代码时感到困惑,尤其是在处理函数时?你并不孤单!根据一项调查,超过70%的开发者在学习Python时都曾遇到过函数的各种难题。想象一下,如果你能掌握一些高级用法,像装饰器、匿名函数、可变参数和关键字参数等,你的代码将会变得多么优雅和高效!在这篇文章中,我们将......
  • 探索Python模块与包的奥秘:从新手到高手的必经之路
    引言你是否曾在编写Python代码时感到无从下手,尤其是在面对那些看似复杂的模块和包时?根据统计,超过70%的初学者在学习Python时都会遇到模块和包的困惑。今天,我们将揭开这些神秘面纱,带你走进Python模块与包的世界,帮助你轻松掌握它们的定义、使用方法、创建与管理技巧,避免那些常见......
  • 【python进阶攻略10】异常、lambda表达式
    异常异常处理是一种艺术,一旦你掌握,会授予你无穷的力量。我将要向你展示我们能处理异常的一些方式。最基本的术语里我们知道了try/except从句。可能触发异常产生的代码会放到try语句块里,而处理异常的代码会在except语句块里实现。这是一个简单的例子:try:file=open(......
  • 【python进阶攻略11】一行式、For - Else
    一行式本章节,我将向大家展示一些一行式的Python命令,这些程序将对你非常有帮助。简易WebServer你是否想过通过网络快速共享文件?好消息,Python为你提供了这样的功能。进入到你要共享文件的目录下并在命令行中运行下面的代码:#Python2python-mSimpleHTTPServe......
  • 基于Python可视化的学习系统的设计与实现(源码+文档+调试+答疑)
    文章目录一、项目介绍二、视频展示三、开发环境四、系统展示五、代码展示六、项目文档展示七、项目总结大家可以帮忙点赞、收藏、关注、评论啦......
  • python实现归并排序
    归并排序是把数组分为两半,两半再继续细分为小的数组,小数组完成各自排序后,分别合并为几个比较大的数组并完成内部排序,最后合并为一个数组,这时候基本排序是有序的。代码如下data=[6,15,4,2,8,5,11,9,7,13] defmerge_sort(data):  iflen(data)<=1:    return......
  • 强化学习-python案例
    强化学习是一种机器学习方法,旨在通过与环境的交互来学习最优策略。它的核心概念是智能体(agent)在环境中采取动作,从而获得奖励或惩罚。智能体的目标是最大化长期奖励,通过试错的方式不断改进其决策策略。在强化学习中,智能体观察当前状态,选择动作,并根据环境反馈(奖励和下一个状......
  • python 图片查看器
     #coding=utf-8#tkinter的Label控件以及三种布局管理方法#https://www.cnblogs.com/jackie-lee/p/16191662.html#python对话框图形界面显示图片#https://blog.csdn.net/SAPmatinal/article/details/131818285#菜单设置#https://blog.csdn.net/weixin_42272......
  • 校测 2024 0930 数学
    0-30-0,数学还只打了暴力,菜就多练Problem1.facsum省流:\(f(n)=(\sum\limits_{d\midn}\varphi(d))^m(\sum\limits_{d\midn}\sigma_0(d)\mu(\frac{n}{d})\frac{n}{d})\)求\(\sum\limits_{i=1}^nf(i)\bmod1e9+7\)大概是把前面的区域以后再来探索吧Problem2.groupM......