Python 计算思维训练——公式编程

第1关:表达式求解 - 垂直上抛小球位置计算
任务描述
本关任务以垂直上抛小球的位置计算为例,关注如何将数学计算公式转换为 Python 表达式并求值。学生需仔细阅读相关知识,找到数学运算符与 Python 数值运算符之间的对应关系,完成编程任务并输出公式计算的结果。
相关知识
为完成本关任务,你需要掌握物理中的竖直上抛运动,以及 Python 中的算术运算符、变量及输出等知识点
竖直上抛运动
竖直上抛运动指物体以某一初速度竖直向上抛出(不考虑空气阻力),只在重力作用下所做的运动。竖直上抛运动是物体具有竖直向上的初速度,加速度始终为重力加速度 g 的匀变速运动,可分为上抛时的匀减速运动和下落时的自由落体运动的两过程。它是初速度为v
0(v0不等于 0 )的匀速直线运动与自由落体运动的合运动,运动过程中上升和下落两过程所用的时间相等,只受重力作用且受力方向与初速度方向相反。
计算公式:
在这里插入图片描述
Python 算术运算符
要使用 Python 解决上述计算问题,首先需要掌握在 Python 中如何进行四则运算。在 Python 中,四则运算对应的运算符如下:
在这里插入图片描述
此外,Python 幂运算运算符号为**,例如:3 的平方在 Python 中的表示为3**2。
Python 变量
变量的概念基本上和初中代数的方程变量是一致的。只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。变量在程序中用一个变量名表示,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,具体示例如下:

a = 1 #变量a是一个整数
t_007 = 'T007' #变量t_007是一个字符串
Answer = True #变量Answer是一个布尔值True

在 Python 中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
Python 输出
在 Python 中,表示输出的关键字是print,其基本用法是:用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出’hello, world’,用代码实现如下:
print(‘hello, world’)
print()也可以打印整数,或者计算结果。比如输出300,用代码实现如下:
print(300)
编程要求
请根据物理中小球垂直上抛小球的运动规律,编写程序实现计算并输出小球高度的功能。
小球的高度h(m)与小球运动的时间t(s)之间的关系式如下:
在这里插入图片描述
其中,
h是小球的高度
t是小球运动时间
g是地球重力加速度
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
测试输入:1
预期输出:20.1
开始你的任务吧,祝你成功!
参考代码:

# 本程序计算小球上抛在不同时间点的高度
v0 = 25     # 小球上抛的初速度
g = 9.8     # 地球重力加速度
t = int(input())
#   请在此添加实现代码   #
# ********** Begin *********#
h=25*t-0.5*g*t**2
print(h)
# ********** End **********#

第2关:输出格式控制 - 摄氏-华氏温度换算
任务描述
我们在计算数学公式时,计算结果很多时候都带有无穷小数,比如34.333333…,面对这种情况,我们一般通过保留小数点后面的有效数字来让结果更加简洁美观。
本关任务以摄氏-华氏温度换算为例,关注在 Python 中如何控制输出格式化的字符串。
相关知识
为了完成本关任务,你首先需要知道华氏-摄氏温度相互间的转化关系;其次,为了给出交互性更好的输出结果,你需要掌握 Python 输出格式控制的相关知识。
华氏-摄氏温度
华氏温标( F )与摄氏温标( C )是两大国际主流的计量温度的标准。华氏温标是德国人华伦海特( Fahrenheit )于 1714 年创立的温标,它以水银作测温物质,定水的熔点为 32 度,沸点为 212 度,中间分为 180 度,以 ℉ 表示。
摄氏温标是 1740 年瑞典人摄尔修斯( Celsius )提出的,在标准大气压下把冰水混合物的温度定为 0 摄氏度,水的沸点规定为 100 度。根据水这两个固定温度点来对温度进行分度,两点间作 100 等分,每段间隔称为 1 摄氏度,记作 1℃。
两个温标的换算公式如下:
在这里插入图片描述
Python 输出格式控制
在 Python 中,采用的格式化方式和 C 语言是一致的,用 % 实现,举例如下:
输入:
‘Hello, %s’ % ‘world’
‘Hi, %s, you have $%d.’ % (‘Michael’, 1000000)
输出:
‘Hello, world’
‘Hi, Michael, you have $1000000.’
你可能猜到了,%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
常见的占位符有:
在这里插入图片描述
%.2f表示转成浮点数,小数点后保留2位。
编程要求
请编写程序,实现计算并输出华氏度对应的摄氏度是多少?输出格式为:华氏?度=摄氏?度,且华氏度和摄氏度都需保留两位小数,?需替换为对应的计算结果。
注意:在计算机中,除法分为整数除和浮点除两种:
两个整数相除,结果是整数,比如9/5=1,2/3=0;
两个浮点数相除,结果是浮点数,比如:9.0/5.0=1.8, 2.0/3.0=06666666666…
若是一个整数和一个浮点数相除,程序会自动先将整数转化为浮点数然后相除。
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
本关的样例测试集如下:
测试输入:50
预期输出:华氏50.00度=摄氏10.00度
开始你的任务吧,祝你成功!
参考代码:

# 本程序进行华氏温度和摄氏温度之间的转换
# 请通过换算公式来计算相应的摄氏温度值,需给出Python表达式
# 最终输出格式为:华氏**度=摄氏**度
F = float(input())    # 华氏温度
#   请在此添加实现代码   #
# ********** Begin *********#
C=(F-32)*5/9
print('华氏%.2f度=摄氏%.2f度'%(F,C))
# ********** End **********#

第3关:库函数的使用 - 小球阻力落体运动
任务描述
当我们在数学和物理等知识领域中进行公式计算时,总是涉及到一些数学函数运算,比如指数函数、对数函数、三角函数等等。Python 提供了丰富的数学计算库来进行函数运算。
本关任务以小球阻力落体运动为例,关注如何调用 Python 的数学计算库进行函数运算并求值。学生需仔细阅读相关知识,快速熟悉 Python 中的 math 计算库,并输出计算结果。
相关知识
为了完成本关任务,你需要学习 Python 模块以及 Python 中的数学计算模块 math 的使用方法。
小球阻力落体运动
在空气中由静止开始下落的小球既受重力的作用又受到阻力的作用。设小球的质量为m,速度为v,重力加速度为g,所受空气阻力假定与v 平方 正比,阻尼系数为u。设初始时刻小球静止,即v0=0。
小球遵循的运动方程如下,x表示运动距离:
在这里插入图片描述
Python 模块的使用
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在 Python 中,一个.py文件就称之为一个模块( Module )。
Python 内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。使用模块的第一步,就是导入该模块。以 sys 模块为例,导入的示例代码为:
import sys
导入 sys 模块后,我们就有了变量sys指向该模块。利用sys这个变量,就可以访问 sys 模块的所有功能。 sys 模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:
运行python hello.py获得的sys.argv就是[‘hello.py’]。
Python 数学计算模块 math
Python 中的数学计算模块 math 提供了常用数学函数计算支持。可通过dir查看,如下图所示。
在这里插入图片描述
常用的函数及其具体功能如下表格所示:
在这里插入图片描述
具体函数调用可参考如下三种使用方式:
直接导入具体函数,比如:
from math import tanh
一次性导入该模块对应的所有的函数
from math import *
只导入模块,之后加模块前缀调用具体函数
import math
math.sin(0.5*math.pi) #1.0
编程要求
在小球阻力落体运动中,已知:g=9.8m/s2,m=0.25kg,u=0.5,请编写程序实现计算并输出小球的速度v与向下的运动距离x的功能。
要求输出包括两行:
第一行的输出格式为:当t=?秒时,速度v=?米/秒;
第二行的输出格式为:?秒后,小球位置为向下?米。
时间t的输出为整数,速度v和距离x都需保留两位小数,?需替换为对应的计算结果。
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
本关的样例测试集如下:
测试输入:2
预期输出:
当t=2秒时,速度v=2.21米/秒
2秒后,小球位置为向下4.08米
开始你的任务吧,祝你成功!
参考代码:

# 计算小球在空气中向下作阻力落体运动中随时间的速度变化情况
# 1.导入需要的函数
# 2.根据落体运动速度方程计算某时刻小球的速度
# 3.根据落体运动位置方程计算某时刻小球的位置
# 4.格式化输出计算结果
g = 9.8   # 单位:米/秒平方,重力加速度
m = 0.25  # 单位:千克
u = 0.5
t = int(input()) # 单位:秒
#   请在此添加实现代码   #
# ********** Begin *********#
from math import sqrt,tanh,cosh,log
v = sqrt(m * g / u) * tanh(sqrt(u * g / m * t))
x = m / u * log(cosh(sqrt(u * g / m) * t))
print('当t=%d秒时,速度v=%.2f米/秒'%(t,v))
print('%d秒后,小球位置为向下%.2f米'%(t,x))
# ********** End **********#

第4关:综合应用 - 小球斜上抛运动
任务描述
本关任务要求综合应用前面几个实训任务中的知识和技术,求小球斜上抛运动时垂直方向移动的距离。
相关知识
小球斜上抛运动
将小球向上斜抛,如果不考虑空气阻力的话,小球的运动轨迹将是一条抛物线。假设小球斜上抛的初速度v0 ,水平夹角θ,小球初始高y0(即位置处于x=0,y=y0 ),则小球运动的轨迹方程如下:
在这里插入图片描述
编程要求
将一个小球斜上抛出,假设:v0​ =25km/h,g=9.8m/s
2 ,y0=1,x=0.5,θ的单位为角度(右侧代码中已初始化),v0的单位为千米每小时。
本关具体编程任务如下:
I. 为各参数v0 ,g,y0 赋值;
II. 导入math库以及所需函数;
III. 计算y值;
IV. 格式化输出y值,输出格式为:“y值计算结果为:?米”,y值需保留五位小数,?需替换为对应的计算结果。
提示:v0​ 的单位需换算为m/s,θ的单位需换算为弧度。
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确的数值,只有所有数据全部计算正确才能进入下一关。
本关的样例测试集如下:
测试输入:60
预期输出:y 值计算结果为:1.16043米
开始你的任务吧,祝你成功!
参考代码:

# 本程序计算小球向上斜抛在不同时间点的高度
theta = int(input())  # 单位:角度
#   请在此添加实现代码   #
# ********** Begin *********#
from math import tan,cos,pi
t = pi / 180 * theta
v0 = 25/3.6
g = 9.8
y0 = 1
x = 0.5
y = x * tan(t) - ((1/(2*v0)) * ((g*(x**2))/((cos(t))**2))) + y0
print('y值计算结果为:%.5f米'%(y))
# ********** End **********#
  • 11
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值