头歌实践平台python实验5:python函数

第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=1n​2π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=1n​im,然后调用该函数求s=∑k=1n​k+∑k=12n​​k2+∑k=110n​​k1​的值,结果保留5位小数。 其中,n的值从键盘输入,为保证计算的准确性,要求输入的n能被10整除,否则输出input error

编程要求

根据提示,在右侧编辑器补充代码,完成musum(n,m)函数和main()函数的定义。 系统设定musum(n,m)为函数∑i=1n​im的定义;而在主函数中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) 其中,xn的值由键盘输入,最后计算结果保留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​,其中ab从键盘输入,ab均为正整数,且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 ##########

 

 

 

 

 

 

 

 

 

 

 

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
函数是一段具有特定功能的可重复使用的代码块。它可以用来封装一组逻辑操作,并且可以传入参数和返回值。在Python中,我们可以使用def键字来定义一个函数函数的定义以键字def开始,后面是函数名和一对圆括号。函数名应该简洁明了,并且能够描述其功能。圆括号内可以包含参数,多个参数可以用逗号隔开。函数的定义需要以冒号结尾,并且在下一行缩进一级,表示函数体的开始。函数体中可以有任意多条语句,用于实现具体的功能。 在编写函数时,我们需要考虑函数的输入和输出。输入即函数的参数,可以是任意类型的数据,并且可以有默认值。输出可以使用return语句来指定,并且返回值可以是任意类型的数据。 调用函数时,只需要用函数名加括号的方式即可。传入的参数可以根据函数定义的要求来提供,也可以使用默认值。函数执行后会返回相应的结果,我们可以将其保存到变量中,以便后续操作。 函数在程序中的作用非常重要。它可以将一个大的问题分解成多个小的子问题,从而提高代码的可读性和可维护性。同时,函数的封装和重用性使得代码更加简洁高效,减少了代码的重复编写。 综上所述,函数Python中非常重要的概念和工具,它可以帮助我们实现复杂的功能,并且提高代码的可读性和可维护性。函数的定义和调用都是非常简单的,只需要遵循一定的语法规则即可。在编写程序时,我们应该充分利用函数的特性,合理地拆分问题,并重复使用已经定义好的函数,提高代码的效率和可重用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值