第1关:温度转换
任务描述
本关任务:定义一个函数,参数为一个实数,代表一个摄氏温度值,将它转换为一个华氏温度值,并返回该值(F = 1.8C + 32
)。在主程序中调用该函数。 注意:转换结果保留1
位小数
相关知识
为了完成本关任务,你需要掌握:1.函数的定义方法 2.函数的调用。
编程要求
根据提示,在右侧编辑器补充代码,完成函数的定义。 其中函数调用的代码已经给出,只需完成函数的定义即可 注意:转换结果保留1
位小数
测试说明
平台会对你编写的代码进行测试:
测试输入:input a number:15
预期输出:59.0
测试输入:input a number:39.5
预期输出:103.1
# 请在此添加代码
########## Begin ##########
def convert( C ):
return C*1.8+32
########## End ##########
C = eval(input( "input a number:" ))
F = convert( C )
print( "%.1f"%F )
第2关:求五边形的面积
任务描述
本关任务:编写程序,求如图所示的五边形的面积。
其中k1、k2...、k7
从键盘输入,面积保留5
位小数。
任务分析
求五边形的面积可以变成求三个三角形面积的和。由于要三次计算三角形的面积,为了程序简单起见,可将计算三角形面积定义成函数,然后在主函数中三次调用它,分别得到三个三角形的面积,然后相加得到五边形的面积。
相关知识
为了完成本关任务,你需要掌握:函数的定义与调用。
编程要求
根据提示,在右侧编辑器补充代码,完成求三角形的面积函数ts(a,b,c)
和主函数main()
的定义。 注意: 1、面积要求保留5
位小数 2、不考虑输入的数据是否能构成三角形问题
测试说明
平台会对你编写的代码进行测试:
测试输入:3,2,5,2,7,4,8
预期输出:area= 17.52347
# 请在此添加代码
from math import *
import math
########## Begin ##########
def ts(a,b,c):
s=(a+b+c)/2
area1=math.sqrt(s*(s-a)*(s-b)*(s-c))
return area1
def main():
a1,a2,a3,a4,a5,a6,a7=map(int,input().split(','))
area=ts(a1,a2,a6)+ts(a7,a3,a6)+ts(a4,a5,a7)
value=round(area,5)
print(f'area={value}')
########## End ##########
main()
第3关:匿名函数应用
任务描述
本关任务:编写程序,求y
的值,要求结果保留5
位小数,其中y=e2+∑r=1n2π1+lnr
。
从键盘输入n
的值,求循环累加n
次的和
任务分析
定义一个匿名函数求累加项,循环控制累加n
次。
知识要求
为了完成本关任务,你需要掌握:1.匿名函数的定义,2.匿名函数的调用。
编程要求
根据提示,在右侧编辑器补充代码,计算并输出数组的平均值和最大值。
测试说明
平台会对你编写的代码进行测试:
测试输入1:Please Input n:100
预期输出1:y=81.19547
测试输入2:Please Input n:50
预期输出2:y=38.97777
# 请在此添加代码
from math import *
import math
########## Begin ##########
f=lambda n: ((1+math.log(n)) / (2*math.pi)) #请补充完整lambda函数
########## End ##########
n=int(input("Please Input n:"))
y=exp(2.0)
for n in range(1,n+1):
y+=f(n)
print('y=%.5f'%y)
第4关:函数调用求累加和
任务描述
本关任务:编写程序,先定义函数∑i=1nim
,然后调用该函数求s=∑k=1nk+∑k=12nk2+∑k=110nk1
的值,结果保留5
位小数。 其中,n
的值从键盘输入,为保证计算的准确性,要求输入的n
能被10整除,否则输出input error
编程要求
根据提示,在右侧编辑器补充代码,完成musum(n,m)
函数和main()
函数的定义。 系统设定musum(n,m)
为函数∑i=1nim
的定义;而在主函数中main()``3
次调用musum(n,m)
函数,用于求和。
测试说明
平台会对你编写的代码进行测试:
测试输入1:Please Input n:100
预期输出1:s=47977.92897
测试输入2:Please Input n:55
预期输出2:input error
# 请在此添加代码
########## Begin ##########
def mysum(n,m):
y=0
for i in range(1,int(n+1)):
y+=i**m
return y
def main():
n=int(input('Please Input n:'))
if n%10==0:
s=mysum(n,1)+mysum(n/2,2)+ mysum(n/10,-1)
s=round(s,5)
print(f's={s}')
else:
print("input error")
########## End ##########
main() #调用main实现求和
第5关:递归法求和
任务描述
本关任务:编写程序,用递归方法计算下列多项式函数的值。p(x,n)=x−x2+x3−x4+……+(−1)(n−1)xn(n>0)
其中,x
和n
的值由键盘输入,最后计算结果保留2位小数。
任务分析
函数的定义不是递归定义形式,对原来的定义进行如下数学变换。 p(x,n)=x−x2+x3−x4+……+(−1)(n−1)xn(n>0)
=x[1−(x−x2+x3−……+(−1)(n−2)xn−1)]
=x[1−p(x,n−1)]
经变换后,可以将原来的非递归定义形式转化为等价的递归定义:
p(x,n){xx[1−p(x,n−1)]n=1n>1
由此递归定义,可以确定递归算法和递归结束条件。
相关知识
为了完成本关任务,你需要掌握:递归算法的概念,程序设计中如何使用递归。
编程要求
根据提示,在右侧编辑器补充代码,将函数p(x,n)
的定义补充完整,以实现程序的功能。
测试说明
平台会对你编写的代码进行测试:
测试输入1:请依次输入x,n的值:2,4
预期输出1:p(2.000000,4)=-10.00
测试输入2:请依次输入x,n的值:2.5,9
预期输出2:p(2.500000,9)=2725.50
# 请在此添加代码
########## Begin ##########
def p(x,n):
if n==1:
return x
else:
return x*(1-p(x,n-1)) #函数定义
########## End ##########
x,n=eval(input("请依次输入x,n的值:"))
s=p(x,n)
print("p(%f,%d)=%.2f"%(x,n,s))
第6关:求满足条件的分数
任务描述
本关任务:设计一个程序,求同时满足下列两个条件的分数x的个数: (1)a1<x<b1
,其中a
和b
从键盘输入,a
和b
均为正整数,且a>b
,若输入不正确,则提示“Input Error
” (2)x
的分子分母都是素数,且分母是2
位数。
程序分析
设x=m/n,a=6,b=5
根据条件(2)
,有10≤n≤99
;根据条件(1)
,有5m≤n≤6m
,并且m、n
均为素数。 可以用穷举法来求解这个问题,并设计一个函数来判断一个数是否为素数,是素数返回值为True
,否则为False
。
编程要求
根据提示,在右侧编辑器补充代码,请将判断素数的函数isprime(n)
及主函数main()
的定义补充完整,以实现程序功能。
测试说明
平台会对你编写的代码进行测试:
测试输入1: please input a:6
please input b:5
预期输出1: 满足条件的数有13个
测试输入2: please input a:12
please input b:7
预期输出2: 满足条件的数有25个
测试输入3: please input a:5
please input b:6
预期输出3: Input Error
# 请补充完善代码
########## Begin ##########
from math import *
def isprime(n):
if n>1:
for i in range (2,n):
if n%i==0:
return False
else:
return True #判断一个数是否为素数
def main():
a=int(input("please input a:"))
b=int(input("please input b:"))
if(a<0 or b<0 or a<=b):
print("Input Error")
else:
count=0
for i in range(10,99):
if isprime(i)==1:
if i%a==0:
for j in range(i//a,i//b+1):
if isprime(j)==1:
count+=1
else:
d=(i//a)+1
for j in range(d,i//b+1):
if isprime(j)==1:
count+=1 ##以下为求出满足条件的分数的个数
print("满足条件的数有{:d}个".format(count))
main() ##调用main函数实现程序的功能
########## End ##########