实验05(函数)
一、课内实验题(共10小题,100分)
题型得分 100
【描述】
如果四边形四条边的长度分别为a、b、c、d,一对对角之和为2α,则其面积为:
定义函数:def compute_area(a, b, c, d, alpha),计算任意四边形的面积。
编写一个main函数,设有一个四边形,其四条边边长分别为 3、4、5、5,一对对角之和为145°,计算它的面积。结果保留2位小数。
【输入】
没有输入。
【输出】
输出对应的四边形面积,结果保留2位小数。
【来源】
《Python程序设计基础》第4章编程题1。
(10分)
我的答案:
def compute_area(a,b,c,d,alpha):
p=(a+b+c+d)/2
area=((p-a)*(p-b)*(p-c)*(p-d)-a*b*c*d*(cos(alpha)**2))**0.5
return area
题目得分 10
【描述】
求一个整数的逆序数。定义函数:def reverse(n),该函数返回一个整数的逆序数。
当整数含有结尾的0时,输出不应带有前导的0。比如输入100,输出应该是1。
编写一个main函数,输入一个整数,调用reverse函数,显示该整数的逆序数。
【输入】
一行中给出一个整数。
【输出】
一行中输出该整数的逆序数。
【输入示例】
-123
【输出示例】
-321
【来源】
《Python程序设计基础》第4章编程题2。
(10分)
我的答案:
def reverse(n):
symbal=1
sum=0
if n<0:
n=-1*n
symbal=-1
while n>0:
x=n%10
sum=sum*10+x
n//=10
sum*=symbal
return sum
题目得分 10
【描述】
编写程序,计算如下序列的值。结果保留4位小数。
定义函数:def m(i),返回序列的值。
编写一个main函数,调用m函数,并输出序列的值。
【输入】
在一行中给出一个正整数,表示序列的项数。
【输出】
在一行中输出序列的值,结果保留4位小数。
【输入示例】
901
【输出示例】
3.1427
【来源】
《Python程序设计基础》第4章编程题3。
(10分)
我的答案:
def m(i):
s=0
for j in range(1,i+1):
if j%2==0:
s-=1/(2*j-1)
else:
s+=1/(2*j-1)
return s
题目得分 10
【描述】
定义total函数,返回若干个整数的和,体会函数默认参数的使用。
【输入】
没有输入。
【输出】
100
106
16
36
【提示】
根据total函数被调用时实参的使用和结果的输出,推测total函数的定义。(10分)
我的答案:
def total(a=0,b=100,c=0):
s=a+b+c
return s
题目得分 10
【描述】
编写程序,定义和调用函数:def count_digit(number, digit),number是整数,digit为[1, 9]区间内的整数,返回number中digit出现的次数。
【输入】
一行中输入两个整数,以空格间隔。
【输出】
见【输出示例】
【输入示例】
-21252 2
【输出示例】
Number of digit 2 in -21252: 3
(10分)
我的答案:
#coding=utf-8
#请在此处编写count_digit函数。提交时请删除中文。
def count_digit(number, digit):
f=0
n=abs(number)
while n>0:
if n%10==digit:
f+=1
n=n//10
return f
题目得分 10
【描述】
输入一个整数,判断它是否是回文整数。如果一个整数的逆序数和原数一样,这个整数就称为回文整数
定义函数:def is_palindrome(n),如果n是回文数,返回True,否则返回False。
编写一个main函数,输入一个整数,调用is_palindrome函数,判断该整数是否为回文整数。如果该整数是回文数,输出True,否则输出False。
【输入】
一行中给出一个整数。
【输出】
如果该整数是回文数,输出True,否则输出False。
【输入示例】
616
【输出示例】
True
(10分)
我的答案:
#coding=utf-8
#请在此处编写is_palindrome函数。提交时请删除中文。
def is_palindrome(n):
f=1
s=list(str(n))
for i in range(len(s)//2):
if s[i]!=s[len(s)-i-1]:
f=0
if f==1:
return True
if f==0:
return False
题目得分 10
【描述】
一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。
例如6是完数,6=1+2+3(6的因子是1、2、3)。
定义函数:def is_perfect_number(n),判断n是否是完数,如果是完数,返回True,否则返回False。
编写一个main函数,读入两个正整数n和m(1≤n<m<1000),输出[n, m]范围内所有的完数。
【输入】
一行中给出两个正整数,其间以空格分隔。
【输出】
输出[n, m]范围内所有的完数,其间以空格分隔。如果没有完数,则输出0。
【输入示例】
1 10
【输出示例】
6
(10分)
我的答案:
#coding=utf-8
#请在此处编写is_perfect_number函数。提交时请删除中文。
def is_perfect_number(n):
list1=[]
for i in range(1,n):
if n%i==0:
list1.append(i)
s=sum(list1)
# print(s)
if s==n:
return True
else:
return False
题目得分 10
【描述】
只包含因子2、3、5的正整数被称作丑数,比如4、10、12都是丑数,而7、23、111则不是丑数,另外1可以视为特殊的丑数。
定义函数:def is_ugly(n),如果n是丑数,返回True,否则返回False。
编写main函数,输入一个正整数,调用is_ugly函数,如果该正整数是丑数,输出True,否则输出False。
【输入】
一行中输入一个正整数n(1≤n≤1000000)。
【输出】
如果n是丑数,输出True,否则输出False。
【输入示例】
12
【输出示例】
True
【来源】
《Python程序设计基础》第4章编程题5。
(10分)
我的答案:
#coding=utf-8
#请在此处编写is_ugly函数。提交时请删除中文。
def is_ugly(n):
list1 = [2,3,5]
list2=[]
for i in list1:
while n%i==0:
n=n/i
return n==1
题目得分 10
【描述】
定义函数:def square_root(value),返回value的平方根。
编写一个main函数,读入一个数,调用square_root函数,输出该数的平方根。
注意:不能使用数学函数sqrt和幂运算符**。
可以通过对下面公式的反复计算近似地得到平方根:
'计算机生成了可选文字:
当nextGuess和lastGuess几乎相同时,nextGuess就是平方根的近似值。nextGuess最初的猜测值可以是任意一个值(例如1.0)。这个值就是lastGuess的初始值。如果nextGuess和lastGuess的差小于一个很小的数(例如0.000001),就可以认为nextGuess是value平方根的近似值;否则,nextGuess就赋值给lastGuess,迭代过程继续进行。
【输入】
一行中给出一个数。
【输出】
输出该数的平方根,结果保留6位小数。。
【输入示例】
2
【输出示例】
1.414214
(10分)
我的答案:
def square_root(value):
e=0.000001
lastguess=1
nextguess=(lastguess+(value/lastguess))/2
while abs(lastguess-nextguess)>e:
lastguess=nextguess
nextguess = (lastguess + (value / lastguess)) / 2
guess = lastguess
return guess
题目得分 10
【描述】
定义函数:def f(x, n),用递归求下列数学式子的值,其中x为浮点数,n为整数。
编写一个main函数,读入x和n,输出数学式子的值,结果保留2位小数。
【输入】
一行中给出两个数,其间以空格分隔。
【输出】
输出数学式子的值,结果保留2位小数。
【输入示例】
2 3
【输出示例】
6.00
(10分)
我的答案:
def f(x, n):
s=0
for i in range(1,n+1):
s+=(((-1)**(i-1))*x**i)
return s
题目得分 10