实验六:函数的定义与应用(2学时)
一、实验方式:
一人一机
二、实验目的:
1、掌握函数的定义与使用方法
2、掌握常用算法的函数实现
3、能够使用函数方法解决应用问题
三、实验内容:
1、求s=1!+3!+5!+7!+9!的值。
2、编写一个函数,键盘输入一个正整数n,输出杨辉三角的前n行。
3、已知三角形的三边长a,b,c,利用海伦公式求该三角形的面积。(要求:海伦公式部分请使用函数实现)
4、输入一个大于1的正整数,输出该数的质因子列表。(要求:质因子列表算法部分请使用函数实现)
5、蒙特·卡罗法计算圆周率。(要求:算法部分请使用函数实现)
6、高数建模:设方程sinx+x+1=0,试用二分法求其在区间[,]上的一个根。(要求给出二分法的程序实现的源代码)
四、实验结果与分析:
1、求s=1!+3!+5!+7!+9!的值。
编辑器方式
(1)程序代码(程序运行最终正确代码):
def jiecheng(n):
    s=1
    for i in range(1,n+1):
        s=s*i
    return s
ss=0
ss=jiecheng(1)+jiecheng(3)+jiecheng(5)+jiecheng(7)+jiecheng(9)
print(ss)
(2)程序结果(截图Alt+PrtSc):
(3)程序分析(程序运行错误修改或运行结果分析):无
2、编写一个函数,键盘输入一个正整数n,输出杨辉三角的前n行。
编辑器方式
(1)程序代码(程序运行最终正确代码):
def yanghuisanjiao(n):
    print([1])
    line1=[1,1]
    print(line1)
    for i in range(2,n):
        y=[]
        for j in range(0,len(line1)-1):
            y.append(line1[j]+line1[j+1])
        line1=[1]+y+[1]
        print(line1)
while True:
    n=int(input("请输入一个正整数(0退出):"))
    if n==0:
        break
    else:
        yanghuisanjiao(n)
print(line1)       
(2)程序结果(截图Alt+PrtSc):
(3)程序分析(程序运行错误修改或运行结果分析):
3、已知三角形的三边长a,b,c,利用海伦公式求该三角形的面积。(要求:海伦公式部分请使用函数实现)
编辑器方式
(1)程序代码(程序运行最终正确代码):
def hailun(a,b,c):
    s=(a+b+c)/2
    area=(s*(s-a)*(s-b)*(s-c))**0.5
    return area
a=float(input("输入边长1:"))
b=float(input("输入边长2:"))
c=float(input("输入边长3:"))
while not(a+b>c and b+c>a and a+c>b):
    print("输入的三个值不能构成三角形,请重新输入!")
    a=float(input("输入边长1:"))
    b=float(input("输入边长2:"))
    c=float(input("输入边长3:"))
area=hailun(a,b,c)
print("三角形的面积=%.2f"%area)           
   
(2)程序结果(截图Alt+PrtSc):
(3)程序分析(程序运行错误修改或运行结果分析):
4、输入一个大于1的正整数,输出该数的质因子列表。(要求:质因子列表算法部分请使用函数实现)
编辑器方式
(1)程序代码(程序运行最终正确代码):
def zys(n):
    num=[]
    i=2
    while i<=n:
        if n%i==0:
            n=n/i
            num.append(i)
            i=1
        i+=1
    return num
a=int(input("请输入一个大于1的正整数:"))
num=zys(a)
print(num)
(2)程序结果(截图Alt+PrtSc):
(3)程序分析(程序运行错误修改或运行结果分析):
5、蒙特·卡罗法计算圆周率。(要求:算法部分请使用函数实现)
编辑器方式
(1)程序代码(程序运行最终正确代码):
def mspi(n):
    import random
    PI=0
    for i in range(1,num+1):
        x=random.uniform(-1,1)
        y=random.uniform(-1,1)
        if(x*x+y*y<=1):
            PI+=1
    return PI
num=int(input("请输入掷飞镖次数:"))
PI=mspi(num)
print("圆周率的值:{}".format(PI/num*4))
       
(2)程序结果(截图Alt+PrtSc):
(3)程序分析(程序运行错误修改或运行结果分析):
6、高数建模:设方程sinx+x+1=0,试用二分法求其在区间[,]上的一个根。(要求给出二分法的程序实现的源代码)
编辑器方式
(1)程序代码(程序运行最终正确代码):
import math
def bisection(function,start,end):
    if function(start)==0:
        return start
    elif function(end)==0:
        return end
    elif (function(start)*function(end)>0):
        print("couldn't find foot in [{},{}]".format(start,end))
        return
    else:
        mid=start+(end-start)/2.0
        while abs(start-mid)>10**-7:
            if function(mid)==0:
                return mid
            elif function(mid)*function(start)<0:
                end=mid
            else:
                start=mid
            mid=start+(end-start)/2.0
        return mid
def f(x):
    return math.sin(x)+x+1
a=-math.pi/2
b=math.pi/2
print(bisection(f,a,b))
       
   
(2)程序结果(截图Alt+PrtSc):
python新手代码错了应该怎么改
(3)程序分析(程序运行错误修改或运行结果分析):

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。