实验六:函数的定义与应用(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小时内删除。
发表评论