Python学习---课后练习整理(二)

这篇博客整理了Python程序设计课程的课后练习,包括练习05和06的详细解答,涉及函数应用、数学计算及Fibonacci数列。
摘要由CSDN通过智能技术生成

python课后练习整理(二)

本学习的课程Python程序设计的练习在拼题A上完成,为了记录学习过程,对课后练习进行整理

python练习05

1.使用函数求特殊a串数列和 (30 分)

给定两个均不超过9的正整数a和n,要求编写函数fn(a,n) 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列和

函数接口定义:

fn(a,n)
其中 a 和 n 都是用户传入的参数。 a 的值在[1, 9]范围;n 是[1, 9]区间内的个位数。函数须返回级数和
裁判测试程序样例:

/* 请在这里填写答案 */
		 
a,b=input().split()
s=fn(int(a),int(b))
print(s)
输入样例:
在这里给出一组输入。例如:

2 3
输出样例:
在这里给出相应的输出。例如:

246

解答:

def fn(a,n):
    i = 0
    x = 0 # 中间值
    sum = 0
    for i in range(n):
        x = x * 10 + a # 中间值为前一个中间值*10+a
        sum += x # 前n个x求和
    return sum

思路:
刚开始的时候,是想着用字符串操作的,因为python可以字符串乘法复制
但是需要进行多次类型转换,太累,所以还是正常地用数学计算吧
2. 使用函数求余弦函数的近似值 (20 分)


本题要求实现一个函数,用下列公式求cos(x)近似值,精确到最后一项的绝对值小于eps(绝对值小于eps的项不要加):

cos (x) = x^0 / 0! - x^2 / 2! + x^4 / 4! - x^6 / 6! + ?

函数接口定义:funcos(eps,x ),其中用户传入的参数为eps和x;函数funcos应返回用给定公式计算出来,保留小数4位。

函数接口定义:
函数接口:
funcos(eps,x ),返回cos(x)的值。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:


/* 请在这里填写答案 */

eps=float(input())
x=float(input())
value=funcos(eps,x )
print("cos({0}) = {1:.4f}".format(x,value))
输入样例:
在这里给出一组输入。例如:

0.0001
-3.1
输出样例:
在这里给出相应的输出。例如:

cos(-3.1) = -0.9991

解答:

def factorial(n):
    if n != 0:
        return n * factorial(n - 1)
    else:
        return 1
    
    
def funcos(eps,x):
    i=0
    s=0
    while x**i/factorial(i)>eps or x**i/factorial(i)==eps:
        i=i+2
    for j in range(0,i,2):
        if j%4==0:
            s=s+x**j/factorial(j)
        else:
            s=s-x**j/factorial(j)
    print('cos({0}) = {1:.4f}'.format(x,s))

python练习06

  1. 使用函数输出指定范围内Fibonacci数的个数
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m<n≤100000)之间的所有Fibonacci数的数目。 所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,fib(0)=fib(1)=1。其中函数fib(n)须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数的个数。

函数接口定义:
在这里描述函数接口。例如:
fib(n),返回fib(n)的值
PrintFN(m,n),用列表返回[m, n]中的所有Fibonacci数的个数。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
/* 请在这里填写答案 */

m,n,i=input().split()
n=int(n)
m=int(m)
i=int(i)
b=fib(i)
print("fib({0}) = {1}".format(i,b))
fiblist=PrintFN(m,n)
print(len(fiblist))
输入样例:
在这里给出一组输入。例如:

20 100 6
输出样例:
在这里给出相应的输出。例如:

fib(6) = 13
4

解答:

def PrintFN(m, n, i):
    count = 0
    L = [1, 1]
    while len(L) < 50:
        L.append(L[-1]+L[-2])
    for num in range(m, n):
        if num in L:
            count += 1
    print("fib(%d) = %d" % (i, L[i]))
    print(count)
  1. 计算素数和
本题要求计算输入两个正整数x,y(x<=y,包括x,y)素数和。函数isPrime用以判断一个数是否素数,primeSum函数返回素数和。

输入格式:
输入两个整数。

输出格式:
[m-n]间的素数和

裁判测试程序样例:
/* 请在这里填写答案 */

x,y =map(int, input().split())
print(primeSum(x,y))
输入样例:
2 8
输出样例:
17

解答:

def isPrime(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5 + 1)):
        if n % i == 0:
            return False
    return True


def primeSum(m, n):
    sum = 0
    for num in range(m, n):
        if isPrime(num):
            sum += num
    return sum


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值