头歌python实训通关五——面向过程编程——进阶

第1关:莱布尼兹公式计算Π值

任务描述

本关任务:编写一个能计算Π值的函数,要求采用莱布尼兹公式方法。

相关知识

为了完成本关任务,你需要掌握: 1.函数的设计 2.莱布尼兹公式:π = 4/1 − 4/3 + 4/5 − 4/7 + 4/9 − 4/11… 3.计算精度和浮点数

编程要求

根据提示,在右侧编辑器补充代码,计算并输出15 位精度的 pi 值。

测试说明

平台会对你编写的代码进行测试:

测试输入: 预期输出:3.140592653839794

测试输入:10000 预期输出:3.141492653590034

def estimate_pi_by_leibniz(n_terms = 1000):
    """
    通过莱布尼兹公式计算 pi 值,此方法不容易得到 15 位精度的 pi 值
    莱布尼兹公式:π = 4/1 − 4/3 + 4/5 − 4/7 + 4/9 − 4/11…
    :param n_terms:计算项数 n,默认值 1000
    :return:返回保留小数点后15位的 pi 值
    """
    
    result=0
    for i in range(n_terms):
        result+=(-1)**i/(2*i+1)
    result=result*4
    
    return round(result,15)

第2关:Bailey–Borwein–Plouffe公式计算Π值

任务描述

本关任务:编写一个能计算Π值的程序,要求使用Bailey–Borwein–Plouffe公式

相关知识

为了完成本关任务,你需要掌握: 1.函数设计 2.浮点数计算精度 3.

编程要求

根据提示,在右侧编辑器补充代码,计算并输出15位精度的Π值

测试说明

平台会对你编写的代码进行测试:

测试输入:1000 预期输出:3.141592653589793

def estimate_pi_by_bbp(n_terms = 1000) -> float:
    """
    利用 Bailey–Borwein–Plouffe 公式进行计算,此方法可以得到 15 位精度的 pi 值
    :param n_terms:计算项数 n,默认值 1000
    :return:返回保留小数点后15位的 pi 值
    """
    result = 0
    for i in range(n_terms+1):
        result+=1/(16**i)*(4/(8*i+1)-2/(8*i+4)-1/(8*i+5)-1/(8*i+6))
    return("%.15f"%result)

第3关:单词搜索

任务描述

本关任务:编写一个能搜索单词的程序。

相关知识

为了完成本关任务,你需要掌握: 1.DFS和回溯算法 2.函数设计 3.导入from typing import List

编程要求

根据提示,在右侧编辑器补充代码,要求你能在竖线、横和斜线方向上实现搜索单词的功能。

测试说明

平台会对你编写的代码进行测试: 输入行大小、列大小、然后输入字母表、然后输入单词

测试输入: 4 4 a b c e a f c s a d e e a d e e fa 预期输出:True

测试输入: 4 4 a b c e a f c s a d e e a d e e dt 预期输出:False

def exist(board, word):
    for i in range(len(board)):
        for j in range(len(board[0])):
            if judger(board,i,j,word,0):
                return True
    return False

def judger(board,i,j,word,index):
    if index == len(word):
        return True
    if i<0 or i>=len(board) or j<0 or j>=len(board[0]) or board[i][j] != word[index]:
        return False
    board[i][j]="*"
    judge = judger(board,i+1,j,word,index+1) or judger(board,i,j+1,word,index+1) or judger(board,i-1,j,word,index+1) or judger(board,i,j-1,word,index+1) or judger(board,i+1,j+1,word,index+1) or judger(board,i+1,j-1,word,index+1) or judger(board,i-1,j+1,word,index+1) or judger(board,i-1,j-1,word,index+1)
    board[i][j]=word[index]
    return judge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值