Python实验八 函数的应用

1.写出下列程序的运行结果

def foo(num):
    for j in range(2, num // 2+1):
        if num % j == 0:
            return False
        else:
            return True
def main():
    n,c = 8,0
    for i in range(2, n+1):
        if foo(i):
            c += 1
    print(c)
if __name__ == '__main__':
    main()

2.写出下列程序的运行结果

def foo(list, num):
    if num == 1:
        list.append(0)
    elif num == 2:
        foo(list, 1)
        list.append(1)
    elif num > 2:
        foo(list, num-1)
        list.append(list[-1] + list[-2])
mylist = []
foo(mylist, 10)
print(mylist)

3.下列程序的作用是求两个正整数 m,n 的最大公约数,请补充程序

def gcd(m,n):
    if m<n:
        m,n=n,m
    if m%n==0:
        return n
    else:
        return gcd(n,m%n)
ans=gcd(84,342)
print(ans)

4.计算空间一点 p(x,y,z)的方向弦,其计算公式如下

import math
def foo(x,y,z):
    a=x/math.sqrt(x**2+y**2+z**2)
    b=y/math.sqrt(x**2+y**2+z**2)
    c=z/math.sqrt(x**2+y**2+z**2)
    print(a,b,c)
x,y,z=map(int,input().split())
foo(x,y,z)

5.定义一个函数,它返回整数 n 从右边开始数的第 k 个数字

def positive_number(m,n):
    c=0
    while(m>0 and n>0):
        c=int(m%10)
        m=int(m/10)
        n -= 1
    if(n==0):
        return c
n=int(input('请输入整数n:'))
k=int(input('请输入位置K:'))
print(positive_number(n,k))

6.定义一个函数,如果数字 d 在整数 n 的某位中出现,则返回 True,否则返回 False

def fun(d,n):
    if str(d) in str(n):
        return True
    else:
        return False
d=input('请输入d的值:')
n=input('请输入n的值:')
print(fun(d,n))

7.输入x和n的值,求y值。要求分两种情况实现:直接在程序中定义函数 s(x,n);在模块中定义函数 s(x,n)

import math
def s(x,n):
    s=0
    for i in range (1,n+1):
        fm=1
        for j in range(1,i+1):
            fm*=j
        s+=(x**2)/fm
    return s
x,n=map(int,input('请输入x和n的值:').split())
y=s(x,n)/(s(x+1.75,n)+s(x,n+5))
print(y)

8.若 Fibonacci 数列的第 n 项记为 fib(a,b,n),则有下面的递归定义,用递归方法求 5000 之内的最大的一项

def fib(a,b,n):
    if n==1:
        return a
    if n==2:
        return b
    return fib(b,a+b,n-1)
maxitem=0
num=0
i=1
while True:
    maxitem = fib(1,1,i)
    if(maxitem>=5000):
        print(num)
        break
    num=maxitem
    i+=1
  • 38
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值