实验报告四 函数

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必须多敲。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐