一、具体值表达式的转换
本关任务:仔细阅读背景知识,找到数学运算符与Python
数值运算符之间的对应关系,将下面数学表达式转换为Python
表达式,并用print
语句打印结果。
1.求1234
除以123
的余数。
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(1234%123)
2.某个国家的人均寿命是90
岁,请问人均能活多少秒?
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(90*365*24*60*60)
3.123/12
的商。
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(123//12)
4.123/12
的值。
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(123/12)
5.请问一个新生儿能活十亿秒吗?即计算并输出十亿秒是多少年。
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(10**9/60/60/24/365)
6.33+43+53=63
是否成立?
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(True)
7'分别计算1.02365
和1.01365
,可知“多百分之一努力,得千分收成”。
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(1.02**365)
print_(1.01**365)
8.计算并判断1.013∗0.992
是否大于1.01
,输出判断结果。可知“三天打鱼,两天晒网,终将一无所获”。
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_((1.01**3)*(0.99**2)>1.01)
二、Python数学函数
本关任务:仔细阅读下面的相关知识,找到数学函数与Python
数学函数之间的对应关系,将下面数学表达式转换为Python
表达式,并用print
语句打印结果。
本关主题是对包含特殊运算符的表达式的建模,实践如何利用Python
数学函数将这样的数学表达式转换成Python
表达式。
1.分别计算并输出π4+π5
、e6
的值,以及二者的差。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(pi**4+pi**5)
print_(e**6)
print_(pi**4+pi**5-e**6)
2.分别计算4π
与4arctan(51)−arctan(2391)
的值,并观察其差异。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(pi/4)
print_(4*atan(1/5)-atan(1/239))
3.分别计算并输出cos(172π)
、161[−1+17+2(17−17)
+217+317
−2(17−17
)
−22(17+17
)
]
,及二者的差。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(cos(2*pi/17))
print_((-1+sqrt(17)+sqrt(2*17-2*sqrt(17))+2*sqrt(17+3*sqrt(17)-sqrt(2*17-2*sqrt(17))-2*sqrt(2*17+2*sqrt(17))))/16)
print_(cos(2*pi/17)-(-1+sqrt(17)+sqrt(2*17-2*sqrt(17))+2*sqrt(17+3*sqrt(17)-sqrt(2*17-2*sqrt(17))-2*sqrt(2*17+2*sqrt(17))))/16)
4.计算21+5+2−21+51
。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(sqrt(1/2+sqrt(5)/2+2)-1/2-sqrt(5)/2)
5.分别计算并输出sinh(0.25)
与2(e0.25−e−0.25)
的值,查看并比较二者的大小。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
print_(sinh(0.25))
print_((e**0.25-e**-0.25)/2)
三、变量与赋值
仔细阅读下面的介绍,理解变量的定义、其与值的关联关系,以及赋值语句的语法与功能,将下面数学表达式转换为Python
表达式,并用print
语句打印结果。
本关主题是实践和体验Python
变量的用途,学会使用Python
赋值语句实现表达式值的传递。
在前面两关中,所有表达式都由具体值构成,如17
、172π
等,这些值又称为常量,因为其值在程序运行过程中不能再被改变。与此对应,Python
的变量的值在程序运行过程中是可被修改的。
现实世界中大部分表达式中的运算数是可变的,并不是固定成一个值的。如求圆面积公式s=πr2
,其中的r
是可变的,对不同半径的圆,求面积的方法是一样的,只是r的值有差别。那么,需要变量和赋值语句的帮助,来这类表达式转换为Python
表达式和语句。
1.根据下面将摄氏温度转换为华氏温度的公式,在指定的位置编写程序,计算华氏温度值:F=59C+32。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for t in [-271, -100, 0, 100, 1000]:
#请在下面编写代码
F=9*t/5+32
#请不要修改下面的代码
print_(F)
print('\n***********************\n')
2.钟形高斯函数如下所示,请在指定位置编写程序,计算不同参数下的结果。 f(x)=2πs1e[−21(sx−m)2]
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for (m, s, x) in [(0,2,1),(1,2,2),(1,3,4),(1,10,100)]:
# 请在下面编写代码
fx=e**(-(x/s-m/s)**2/2)/sqrt(2*pi*s)
# 请不要修改下面的代码
print_(fx)
print('\n***********************\n')
3.请在指定位置编写程序,按下面公式计算sinh(x)
的值。 sinh(x)=2ex−e−x
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for x in [0.0, pi/2, pi, 3*pi/2, 2*pi, 5*pi/2, 3*pi]:
# 请在下面编写代码
sinh=exp(x)/2-exp(-x)/2
# 请不要修改下面的代码
print_(sinh)
print('\n***********************\n')
4.垂直向上抛出小球,设小球初始速度为v0
,则小球运动过程中离抛出点的高度距离公式为: y=v0t−21gt2 其中g
是重力加速度,值为9.8
,t
表示时间。请在指定位置编写程序,计算在给定初速度下,所给时刻,小球的高度。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
g = 9.8
for v0 in [10, 15, 20, 25, 30]:
for t in [0.0, 0.5, 1, 1.5, 2, 2.5, 3]:
# 请在下面编写代码
y=v0*t-g*(t**2)/2
# 请不要修改下面的代码
print_(y)
print('***********************')
四、※解决实际问题※
本关主题是综合利用前三关掌握的知识,解决实际问题。这些问题来源于实际生活的各个方面,通过问题的解决,希望对计算思维有一定的体验和感悟。
1.在指定地方编写Python
程序来计算、显示通过如下图所示的管道的水流速率。进入管道的水流速率的单位为英尺/秒,管道入口半径和出口半径的单位为英寸。
出口速率的计算公式为:vout=vin(routrin)2
,其中vout
为出口速率,vin
为入口速率,rout
为管道出口半径,rin
为管道入口半径。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for (vin, rin, rout) in [(10, 10, 5), (10, 10, 10), (20, 20, 5), (20, 20, 10)]:
#请在下面编写代码
vout=vin*(rin/rout)**2
#请不要修改下面的代码
print_(vout)
print('\n***********************\n')
2.圆杆(如下图所示的自行车踏板)的最小半径(能够支撑一个人的脚所施加的压力,而不至于超过附着在曲柄臂链轮的压力)的计算公式为:r3=πSdp,其中r
为圆杆的半径(inches
),d
为曲柄臂的长度(inches
),p
为施加在踏板上的重量(lbs
),S
为每 lbs/in2上的压力。基于上述信息,在右侧指定位置编写一个Python
程序根据用户输入来计算r
的值。
基于上述信息,在指定位置编写一个Python
程序根据用户输入来计算r
的值。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for (d, p, S) in [(7,300,10000),(7,400,15000),(10,400,12000),(15,400,12000)]:
# 请在下面编写代码
r=(d*p/(pi*S))**(1/3)
# 请不要修改下面的代码
print_(r)
print('\n***********************\n')
3.编写出一个Python
程序,在给定年限N
和复合利率r
的情况下,计算当贷款金额为P
时,每月需还贷的金额,每月还贷公式为(1+r′)N′−1Pr′(1+r′)N′
,其中r'
为月利息。(提示:r′=1200r
,N'=N*12
)。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for (P, N, r) in [(300000,10,6.5), (300000,20,6.5),(300000,30,6.5)]:
# 请在下面编写代码
r_=r/1200
N_=12*N
money=(P*r_*(1+r_)**N_)/((1+r_)**N_-1)
# 请不要修改下面的代码
print_(money)
print('\n***********************\n')
4.请在指定位置编写程序,将日期作为输入并打印该日期是一周当中的周几。用户输入有三个:m
(月)、d
(日)、y
(年)。对于m
,用1
表示一月,2
表示二月,以此类推。对于输出,0
表示周日,1
表示周一,2
表示周二,以此类推。
对于阳历,如果给定m
,d
,y
,则计算步骤大致如下(注意其中的除法是整数除法,详见下面的相关知识):
y0=y−(14−m)/12
x=y0+4y0−100y0+400y0
m0=m+12(12(14−m))−2
d0=(d+x+1231∗m0)%7
例如:2000
年2
月14
日是周几? y0=2000−1=1999
x=1999+1999/4−1999/100+1999/400=2483
m0=2+12∗1−2=12
d0=(14+2483+(31∗12)/12)%7=2500%7=1
答案:周一
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for (m,d,y) in [(1,1,2017), (2,14,2017), (5,1,2017), (6,1,2017),(7,1,2017),(12,25,2017)]:
# 请在下面编写代码
y0=y - (14-m)//12
x=y0+y0//4-y0//100+y0//400
m0=m+12*((14-m)//12)-2
d0=(d+x+(31*m0//12))%7
# 请不要修改下面的代码
print_(d0)
print('\n***********************\n')
5.编写一个计算并打印地球上两点的大圆弧距离的Python
程序。该程序接收用户的4
个输入x1,y1,x2,y2(分别表示地球上两个点的维度和经度,单位是度)。大圆弧距离计算公式为(单位是英里):
d=R∗arccos(sin(x1)∗sin(x2)+cos(x1)∗cos(x2)∗cos(y1−y2))
其中R=69.1105
英里,1
英里=1.609
公里。请在指定位置编写程序,所给坐标之间的大圆弧距离,单位是公里。(注意,sin
、cos
函数输入是弧度值,而程序中给的是角度值,需要转换。arccos
结果是弧度值,需要转化成角度值)。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for (x1,y1,x2,y2) in [(48.87,-2.33,37.8,-122.4),(40.89,116.50,37.8,-122.4),(40.89,116.50,48.87,-2.33)]:
# 请在下面编写代码
x1=x1*pi/180
x2=x2*pi/180
y1=y1*pi/180
y2=y2*pi/180
m=acos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2))
d=69.1105*1.609*180*m/pi
# 请不要修改下面的代码
print_(d)
print('\n***********************\n')
6.根据给定的温度t(华氏温度)和风速v,可以计算出风寒指数,公式如下:
w =35.74+0.6215 t +(0.4275 t −35.75) v0.16
请在指定位置编写程序,根据所给的温度和风速,计算风寒指数。
from math import *
def print_(x):
if type(x) == float:
print("%.4f" % x)
else:
print(x)
# ********** Begin ********** #
for (t, v) in [(32,10), (32, 100), (40, 10), (40, 100)]:
# 请在下面编写代码
w =35.74+0.6215*t +(0.4275*t-35.75)*(v**0.16)
# 请不要修改下面的代码
print_(w)