赞
踩
第1关:具体值表达式的转换
任务描述
本关主题是具体值组成的表达式的建模,实践如何将这样的数学表达式转换成Python
表达式。
本关任务:仔细阅读背景知识,找到数学运算符与Python
数值运算符之间的对应关系,将下面数学表达式转换为Python
表达式,并用print
语句打印结果。
例如,对数学表达式1+1
,对应的Python
表达式和结果输出语句为print(1+1)
。
请用print
语句输出下列数学表达式的值,或实际问题的答案。
相关知识(略)
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码,完成如下要求:
第一题
求1234
除以123
的余数。
第二题
某个国家的人均寿命是90
岁,请问人均能活多少秒?
第三题
123/12
的商。
第四题
123/12
的值。
第五题
请问一个新生儿能活十亿秒吗?即计算并输出十亿秒是多少年。
第六题
33+43+53=63
是否成立?
第七题
分别计算1.02365
和1.01365
,可知“多百分之一努力,得千分收成”。
第八题
计算并判断1.013∗0.992
是否大于1.01
,输出判断结果。可知“三天打鱼,两天晒网,终将一无所获”。
测试说明
直接输出每道题的答案,每个答案占一行,中间不能空行。
注意:请不要直接print
最终数字,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。
祝你成功!
代码:
- def print_(x):
- if type(x) == float:
- print("%.4f" % x)
- else:
- print(x)
- # ********** Begin ********** #
- #请在每一题的print语句内完成题目所需的表达式
-
- #第一题
- print_(1234%123)
-
- #第二题
- print_(90*365*24*60*60)
-
- #第三题
- print_(int(123/12))
-
- #第四题
- print_(123/12)
-
- #第五题
- print_(1000000000/(60*60*24*365))
-
- #第六题:要求编写两式比较的表达式,输出为True或False
- print_(bool(3*3*3+4*4*4+5*5*5==6*6*6))
-
- #第七题
- print_(1.02**365)
- print_(1.01**365)
-
- #第八题:要求编写两式比较的表达式,输出为True或False
- print_(bool(((1.01**3)*(0.99**2))>1.01))
- # ********** End ********** #
第2关:Python数学函数
任务描述
本关任务:仔细阅读下面的相关知识,找到数学函数与Python
数学函数之间的对应关系,将下面数学表达式转换为Python
表达式,并用print
语句打印结果。
相关知识
本关主题是对包含特殊运算符的表达式的建模,实践如何利用Python
数学函数将这样的数学表达式转换成Python
表达式。
Python
一个很吸引人的特点是其外围库非常丰富。math
模块中定义了非常丰富的数学函数,可以在命令提示符下运行下述命令查看所有预定义的数学函数:
或:
下面列出一些常用的数学函数,请仔细阅读,通过完成本关任务,了解和掌握math
库中数学函数的使用。
abs(x)
:返回整数的绝对值,如abs(-10)
返回10
。
ceil(x)
:返回数字的向上取整,如math.ceil(4.1)
返回5
。
exp(x)
:返回e
的x
次幂,如math.exp(1)
返回2.718281828459045
。
fabs(x)
:返回浮点数的绝对值,如math.fabs(-10)
返回10.0
。
floor(x)
:返回数字的向下取整,如math.floor(4.9)
返回4
。
log(x,base)
:如math.log(math.e,math.e)
返回1.0
,math.log(100,10)
返回2.0
。
log10(x)
:返回以10
为基数的x
的对数,如math.log10(100)
返回2.0
。
max(x1,x2,...)
:返回给定参数的最大值,参数可以为序列。
min(x1,x2,...)
:返回给定参数的最小值,参数可以为序列。
modf(x)
:以元组的形式返回,(小数部分,整数部分)。两部分的数值符号与x
相同,整数部分以浮点型表示。
pow(x, y)
:xy
运算后的值。
round(x [,n])
:返回浮点数x
的四舍五入值,如给出n
值,则代表舍入到小数点后的位数。
sqrt(x)
:返回数字x
的平方根,返回类型为实数,如math.sqrt(4)
返回2.0
。
acos(x)
:返回x
的反余弦弧度值。
asin(x)
:返回x
的反正弦弧度值。
atan(x)
:返回x
的反正切弧度值。
atan2(y, x)
:返回给定的X
及Y
坐标值的反正切值。
cos(x)
:返回x
的弧度的余弦值。
hypot(x, y)
:返回欧几里德范数sqrt(x2+y2)
。
sin(x)
:返回x
弧度的正弦值。
tan(x)
:返回x
弧度的正切值。
degrees(x)
:将弧度转换为角度,如degrees(math.pi/2)
, 返回90.0
。
radians(x)
:将角度转换为弧度
除了上述常用的数学函数,math
库中还定义了两个常用的数学常量:
pi
——圆周率,一般以π
来表示。
e
——自然常数。
一般有两种常用方法来使用math
中的函数:
- import math
- print(math.abs(3))
或:
- from math import *
- print(abs(3))
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码,本关需要你编程计算的数学表达式或实际问题包括以下五题。
第一题
分别计算并输出π4+π5
、e6
的值,以及二者的差。
第二题
分别计算4π
与4arctan(51)−arctan(2391)
的值,并观察其差异。
第三题
分别计算并输出cos(172π)
、161[−1+17+2(17−17)+217+317−2(17−17)−22(17+17)]
,及二者的差。
第四题
计算21+5+2−21+5
。
第五题
分别计算并输出sinh(0.25)
与2(e0.25−e−0.25)
的值,查看并比较二者的大小。
测试说明
右侧代码编辑区已设置好具体输出格式,你只需要在指定位置填写Python
代码即可。
注意:请不要直接print
最终数字,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。
祝你成功!
代码:
- from math import *
-
- def print_(x):
- if type(x) == float:
- print("%.4f" % x)
- else:
- print(x)
- # ********** Begin ********** #
- #请在每一题的print语句内完成题目所需的表达式
-
- #第一题
- print_(pi**4+pi**5)
- print_(exp(6))
- print_(pi**4+pi**5-exp(6))
-
- #第二题
- print_(pi/4)
- print_(4*atan(1/5)-atan(1/239))
-
- #第三题
- print_(cos((2*pi)/17))
- a = cos((2*pi)/17)
- b = (-1) + pow(17,1/2)
- c = pow(2*(17-pow(17,1/2)),1/2)
- d = 2*pow(2*(17+pow(17,1/2)),1/2)
- e = 17+3*pow(17,1/2)
- f = 2*pow((e-c-d),1/2)
- g = (1/16)*(b+c+f)
- h = a-g
- print_(g)
- print_(h)
- #第四题
- i = (1+pow(5,1/2))/2
- j = pow(i+2,1/2)-i
- print_(j)
- #第五题
- print_(sinh(0.25))
- k = exp(0.25)-exp(-0.25)
- l = k/2
- print_(l)
-
- # ********** End ********** #
第3关:变量与赋值
任务描述
仔细阅读下面的介绍,理解变量的定义、其与值的关联关系,以及赋值语句的语法与功能,将下面数学表达式转换为Python
表达式,并用print
语句打印结果。
相关知识
本关主题是实践和体验Python
变量的用途,学会使用Python
赋值语句实现表达式值的传递。
在前面两关中,所有表达式都由具体值构成,如17
、172π
等,这些值又称为常量,因为其值在程序运行过程中不能再被改变。与此对应,Python
的变量的值在程序运行过程中是可被修改的。
现实世界中大部分表达式中的运算数是可变的,并不是固定成一个值的。如求圆面积公式s=πr2
,其中的r
是可变的,对不同半径的圆,求面积的方法是一样的,只是r的值有差别。那么,需要变量和赋值语句的帮助,来这类表达式转换为Python
表达式和语句。
此外,需要主要的是,数学公式s=πr2
中,π
和r
之间省略了乘号,在数学上这是允许的,但是转换成Python
表达式时,不能省略,否则会产生语法错。
可将变量看作是为某个对象起的名字,它提供了名字与对象关联的方式。考虑下面的代码:
mypi=3.1415926
r=1.2
length=2*mypi*radius
r=24.3
这段代码首先用名字pi
和r
分别与不同的float
类型对象3.1415926
和1.2
关联。然后,用名字length
与第三个float
类型对象2*mypi*radius
关联,如下图(a)所示。如果该程序继续执行语句r=24.3
,则名字r
将与另一个float
类型对象24.3
关联,如下图(b)所示。
请记住,在Python
中,变量是而且仅是一个名字而已。赋值语句用赋值运算符=
将右边符号(常量、变量、表达式、函数调用等)所代表的对象与左边的名字进行关联。这种关联不是一对一的,因此,一个对象可以有一个、多个,甚至没有名字与它关联。
Python
语法规定变量名(又称为标识符)可以包含大写字母、小写字母和数字(但不能以数字开头),以及特殊字符_
(下划线)。Python
中标识符是区分大小写的,例如,R
和r
是不同的标识符。
Python
保留了一些标识符作为保留关键字,这些关键字具有特定含义,不能被用作变量名,包括:and
、as
、assert
、break
、class
、continue
、def
、del
、elif
、else
、except
、exec
、finally
、for
、from
、global
、if
、import
、in
、is
、lambda
、not
、or
、pass
、print
、raise
、return
、try
、with
、while
、yield
等。
Python
允许多重赋值,语句x, y = 2, 3
表示将x
与2
关联,y
与3
关联。多重赋值带来很多方便,例如可用一条语句实现两个变量值的交换,运行下面的代码,可以看到变量x
和y
的值进行了交换:
x, y = 2, 3
x, y = y, x
print('x =', x)
print('y =', y)
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码,请编程输出以下数学表达式或实际问题的最终答案:
第一题
根据下面将摄氏温度转换为华氏温度的公式,在指定的位置编写程序,计算华氏温度值:F=59C+32。
第二题
钟形高斯函数如下所示,请在指定位置编写程序,计算不同参数下的结果。 f(x)=2πs1e[−21(sx−m)2]
第三题
请在指定位置编写程序,按下面公式计算sinh(x)
的值。 sinh(x)=2ex−e−x
第四题
垂直向上抛出小球,设小球初始速度为v0
,则小球运动过程中离抛出点的高度距离公式为: y=v0t−21gt2 其中g
是重力加速度,值为9.8
,t
表示时间。请在指定位置编写程序,计算在给定初速度下,所给时刻,小球的高度。
测试说明
右侧代码编辑区已设置好具体输出格式,你只需要在指定位置填写Python
代码即可。
注意:请不要直接print
最终数字,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。
祝你成功!
代码:
- from math import *
-
- def print_(x):
- if type(x) == float:
- print("%.4f" % x)
- else:
- print(x)
- # ********** Begin ********** #
- #第一题
- for temperature in [-271, -100, 0, 100, 1000]:
- #请在下面编写代码
- F = (9/5)*temperature+32
- #请不要修改下面的代码
- print_(F)
-
- print('\n***********************\n')
-
- #第二题
- for (m, s, x) in [(0,2,1),(1,2,2),(1,3,4),(1,10,100)]:
- # 请在下面编写代码
- fx = (1/sqrt(2*pi*s))*exp((-1/2)*((x-m)/s)**2)
- # 请不要修改下面的代码
- print_(fx)
-
- print('\n***********************\n')
-
- #第三题
- for x in [0.0, pi/2, pi, 3*pi/2, 2*pi, 5*pi/2, 3*pi]:
- # 请在下面编写代码
- sinh = (exp(x)-exp(-x))*(1/2)
- # 请不要修改下面的代码
- print_(sinh)
-
-
- print('\n***********************\n')
-
- #第四题
- 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-(1/2)*9.8*t*t
- # 请不要修改下面的代码
- print_(y)
- print('***********************')
- # ********** End ********** #
第4关:解决实际问题※
任务描述
本关主题是综合利用前三关掌握的知识,解决实际问题。这些问题来源于实际生活的各个方面,通过问题的解决,希望对计算思维有一定的体验和感悟。
本关任务:完成编程要求的相关题目。
相关知识
数据类型
对象是Python
程序操作的核心,每个对象都有一个类型,它规定了程序可以对该类型对象进行哪些操作。类型分为标量的和非标量的。标量对象是不可分割的单个对象。非标量对象——例如字符串(String
)——通常不是单个的整体,而是有可分解的内部结构的。
Python
有4
种类型的标量对象:
int
对象用来表示整数。int
类型的对象可通过字面直接看出,如3
、9001
或-72
等。
float
对象用于表示实数。float
类型的对象也可通过字面很容易地看出来,如23.0
、9.48
或-72.28
。也可用科学计数法表示float
类型的对象,例如,3.9E3
代表3.9×103
,等同于3900
。
bool
是用来表示布尔值,即“真”或“假”,在Python
中分别用常量True
和False
表示。
None
对象表示空值。
对象和运算符可以构成表达式,表达式运算后会得到一个值,称为表达式的值,这个值就是具有某种类型的一个对象。例如,表达式7+2
表示int
类型的对象9
,而表达式7.0+2.0
表示float
类型的对象9.0
。Python
中==
运算符用于比较两个表达式的值是否相等,而!=
运算符用于比较两个表达式的值是否不相等。
算术运算符
int
和float
类型的运算符及其说明如下所示:
i+j
:表示对象i和j的和。如果i
和j
都是int
类型,运算结果为int
类型,如果至少有一个为float
类型,结果为float
类型。
i-j
:表示对象i
与j
的差。如果i
和j
都是int
类型,运算结果为int
类型,如果至少有一个为float
类型,结果为float
类型。
i*j
:表示对象i
与j
的乘积。如果i
和j
都是int
类型,运算结果为int
类型,如果至少有一个为float
类型,结果为float
类型。
i//j
:表示整数除法。例如8//2
的值为int
类型4
,9//4
的值为int
类型2
。即整数除法只取整数商,去掉小数部分。
i/j
:表示对象i
除以对象j
,无论i
和j
的类型是int
还是float
,结果都为float
,如10/4
结果为2.5
。
i%j
:表示int
对象i除以int
对象j
的余数,即数学的“模”运算。
i**j
:表示对象i
的j
次方。如果i
和j
都是int
类型,运算结果为int
类型,如果至少有一个为float
类型,结果为float
类型。
比较运算符>
(大于)、>=
(大于等于)、<
(小于)和<=
(小于等于)的含义与其在数学上的含义一样。
算术运算符通常有优先级。例如,表达式x+y*2
的计算过程是先算y
乘以2
,然后将结果与x
相加。计算的顺序可以使用括号来改变,例如,(x+y)*2
表示先计算x
加y
,然后将结果乘以2
。
bool
类型上的运算有:
a and b
:与(and
)运算,如果bool
类型对象a
和b
都为True
,结果为True
,否则结果为False
。
a or b
:或(or
)运算,如果bool
类型对象a
和b
至少有一个为True
,结果为True
,否则结果为False
。
not a
:非(not
)运算,如果bool
类型对象a
为True
,结果为False
;如果为False
,结果为True
。
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码,完成如下要求:
第一题
在指定地方编写Python
程序来计算、显示通过如下图所示的管道的水流速率。进入管道的水流速率的单位为英尺/秒,管道入口半径和出口半径的单位为英寸。
出口速率的计算公式为:vout=vin(routrin)2
,其中vout
为出口速率,vin
为入口速率,rout
为管道出口半径,rin
为管道入口半径。
第二题
圆杆(如下图所示的自行车踏板)的最小半径(能够支撑一个人的脚所施加的压力,而不至于超过附着在曲柄臂链轮的压力)的计算公式为:r3=πSdp,其中r
为圆杆的半径(inches
),d
为曲柄臂的长度(inches
),p
为施加在踏板上的重量(lbs
),S
为每 lbs/in2上的压力。基于上述信息,在右侧指定位置编写一个Python
程序根据用户输入来计算r
的值。
基于上述信息,在指定位置编写一个Python
程序根据用户输入来计算r
的值。
第三题
编写出一个Python
程序,在给定年限N
和复合利率r
的情况下,计算当贷款金额为P
时,每月需还贷的金额,每月还贷公式为(1+r′)N′−1Pr′(1+r′)N′
,其中r'
为月利息。(提示:r′=1200r
,N'=N*12
)。
第四题
请在指定位置编写程序,将日期作为输入并打印该日期是一周当中的周几。用户输入有三个: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
答案:周一
第五题
编写一个计算并打印地球上两点的大圆弧距离的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
结果是弧度值,需要转化成角度值)。
第六题
根据给定的温度t(华氏温度)和风速v,可以计算出风寒指数,公式如下:
w =35.74+0.6215 t +(0.4275 t −35.75) v0.16
请在指定位置编写程序,根据所给的温度和风速,计算风寒指数。
测试说明
右侧代码编辑区已设置好具体输出格式,你只需要在指定位置填写Python
代码即可。
请不要直接print
最终数字,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。
祝你成功!
代码:
- 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')
-
- #第二题
- for (d, p, S) in [(7,300,10000),(7,400,15000),(10,400,12000),(15,400,12000)]:
- # 请在下面编写代码
- r = pow((d*p)/(pi*S),1/3)
- # 请不要修改下面的代码
- print_(r)
-
- print('\n***********************\n')
-
- #第三题
- for (P, N, r) in [(300000,10,6.5), (300000,20,6.5),(300000,30,6.5)]:
- # 请在下面编写代码
- payPerMonth = (P*(r/1200)*(1+r/1200)**(N*12))/((1+r/1200)**(N*12)-1)
- # 请不要修改下面的代码
- print_(payPerMonth)
-
-
- print('\n***********************\n')
-
- #第四题
-
- 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')
-
- #第五题
-
- 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=radians(x1)
- y1=radians(y1)
- x2=radians(x2)
- y2=radians(y2)
- R=69.1105*1.609
- dist=R*acos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2))*180/pi
- # 请不要修改下面的代码
- print_(dist)
-
- print('\n***********************\n')
-
- #第六题
-
- 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)
- # ********** End ********** #
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。