实验报告四 函数
1.编写函数,实现根据键盘输入的长、宽、高之值计算长方体体积。
n1 = input("长:")
n2 = input("宽:")
m =input("高:")
n3 = (int(n1) + int(n2)+int(m)) * 2
n4 = int(n1) * int(n2)*int(m)
print("长:%s ,宽:%s ,高:%s,周长:%s,面积:%s" % (n1, n2,m, n3, n4))
2.编写函数,使用递归函数f(n)实现斐波那契数列中小于等于参数n的所有值
def f(n):
if n<1:
return n
else:
return f(n-1)+f(n-2)
num=int(input('需要输出项的数目:'))
if num<0:
print('请输入正数: ')
else:
print('斐波那契数列为:')
for n in range(num):
print(f(n))
3.编写函数,从键盘输入一个整数,判断其是否为完全数。所谓完全数,是指这样的数,该数的各因子(除该数本身外)之和正好等于该数本身,例如:6=1+2+3,28=1+2+4+7+14。
n = input("输入一个数据:")
n = int(n)
sum = 0
i = 1
while i <= n-1 :
if n % i == 0:
sum += i
i = i + 1
if sum == n :
print("%d是完数"%n)
else:
print("%d是完数" % n)
4.编写函数,从键盘输入参数n,使用递归函数H(n)实现下列特征方程中小于等于参数n的所有值。 H(0)=0; H(1)=1; H(2)=2; H(n)= H(n-1)+9H(n-2)-9H(n-3)
def H(n):
if 0 <= n < 3:
return n
else:
return H(n-1)+9*H(n-2)-9*H(n-3)
num = int(input("请输入参数n:"))
print("函数H(n)小于等于参数n的所有值为:")
for i in range(num):
print(H(i), end=',')
print(H(num))
5.编写函数,实现折半查找。
def halffind(a, c, low, high):
mid = (low + high) // 2
if c == a[mid]:
return mid + 1
elif low > high:
return False
elif c > a[mid]:
return halffind(a, c, low + 1, high)
else:
return halffind(a, c, low, high - 1)
if __name__ == "__main__":
a = [56, 52, -96, -53, 23, -789, 520] # 测试案例
c = int(input('请输入您想要查找的数字'))
if c not in a:
print('当前输入元素不在列表中!')
else:
print('您要查找的数字在列表位置为:')
answer = halffind(a, c, 0, len(a) - 1)
print(answer)
6.编写函数,从键盘输入参数x和n,计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值。
def function(x, n):
flag = 0
m = x
sum = int(0)
for i in range(1, n+1):
sum += m
if flag == 0:
print(m, end=" ")
else:
print("+ {}".format(m), end=" ")
m = 10*m + x
flag += 1
return sum
n, x = map(int, input().split())
print("= {}".format(function(x, n)))
7.编写函数,从键盘输入参数n,计算并显示表达式1 +1/2 –1/3 + 1/4 –1/5 + 1/6+… +(-1)n/n 的前n项之和。
def drab_sum(n):
sum1 = 0.
sum2 =0
if n % 2 == 0:
for i in range(2,n+1,2):
sum1 += 1 / i
if n %2 != 0:
for i in range(1,n+1,2):
sum2 += 1 / i
return sum1-sum2
m = int(input('请输入一个数字:'))
n = drab_sum(m)
print(n)
8.编写函数,从键盘输入一字符串,判断该字符串是否为会回文,所谓回文是指,从前向后读和从后向前读是一样的。
s = input("请输入字符串:")
if not s:
print("请不要输入空字符串!")
s = input("请重新输入字符串:")
rs = list(reversed(s))
if list(s) == rs:
print("%s是回文" % s)
else:
print("%s不是回文" % s)
9.编写函数,从键盘输入一字符串,把其中的各个字符颠倒,标点符号不颠倒,例如,‘I enjoy reading!’,经过函数调用后变为‘gnidaer yojne I’。
def rev(s):
return ' '.join(reversed(s.split()))
x=rev('I like beijing')
print(x)
10.佩奇去超市购买54元巧克力和53元果冻,货币面值有20、10、2、1元,按付款货币数量最少原则,佩奇需要付给超市多少数量的货币,编写函数实现该算法。
price = 54 + 57
money = [20,10,2,1]
num = 0
for m in money:
if price >= m:
num += price // m
print("{}张{}元".format(price // m, m))
price %= m
else:
continue
print("最少需要{}张货币".format(num))
包括问题和解决办法: 编写函数,使用递归函数f(n)实现斐波那契数列中小于等于参数n的所有值和编写函数,从键盘输入参数x和n,计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值,做出来是有点摸不着头,通过同学们一起讨论有了一定的想法以后才做出来了。
心得体会: 通过这次的实验报告我对函数有了一定的了解,通过这次实验对函数有了深入的了解,还有我发现实验题里有一些经典的python题对我们学习python的帮助真的很大,深深体会到了,想 学好python必须多敲。