一、实验目的
- Python函数的定义和调用
- Python函数的参数设计
- Python算法设计
二、实验内容
(1) 实现计算最大公约数和最小公倍数的函数
(2) 实现判断一个正整数 是不是回文数的函数
(3) 实现判断一个数是不是素数的函数
(4) 判断输入的正整数是不是回文素数
(5) 莱布尼兹公式计算Π值
(6) Bailey–Borwein–Plouffe公式计算Π值
(7) 单词搜索
三、实验环境
在Educoder平台进行实验
四、实验要求
根据每个实训的每个关卡要求完成代码提交和测
五、实验步骤
(1).实现最大公约数和最小公倍数的函数
算法思路:
根据广义欧几里得定理
使用辗转相除法,进行最大公约的判断
求出最大公约数
然后调用最大公约数,根据公式
两个整数相乘,除以最大公约数,即为最小公倍数
(2). 实现判断一个正整数 是不是回文数的函数
算法思路:
根据python里面的切片,我们可以用切片的方式进行计算
利用切片将其进行逆序输出,然后进行判断
除此自外,还有多种逆序输出检查的方式
(3). 实现判断一个数是不是素数的函数
算法思路:
除尽所有要判断数字之前的数,但不包括0和1
(4).判断输入的正整数是不是回文素数
这里前面已经写好了函数
所以我们直接调用函数库,进行判断
(5).莱布尼兹公式计算Π值
算法思路:
根据公式,发现奇数的时候是加,偶数的时候是减
但是注意range函数是从0开始的
意思是从第一个开始应该是偶数
第二个是奇数
所以代码实现的时候,range从零开始,那就是偶数是加,奇数是减
(6).Bailey–Borwein–Plouffe公式计算Π值
算法思路:
用pow函数对其进计算,然后用for循环
这里用了round函数进行保留15位小数
这个函数进行的是四舍五入
当然可以根据参数进行调整
(7).单词搜索
算法思路:
采用DFS和回溯算法
第一步我们需要检验,我们需要查找的单词所有字母是否都在单词表里
如果有没有的我们可以直接进行返回False
第二部在exit里面
我们规定好八个方位
我们用栈的方式实现回溯和DFS算法
所以我们生成了栈,当然需要两个栈,类似迷宫问题,我们用来定二维的位置
我们用mark进行标记找到的地方
这道题和迷宫问题类似,但迷宫问题是需要给出入口和出口点,而查找单词是没有入口点和终点的
所以我们还需要自己找到入口的位置
给了一个变量t来进行记录,而且用了二维列表List1
记录所有第一个大写的位置,然后依次遍历
从第一个字母开始
用d变量进行8次循环,方位的变换
用sb变量对word单词进行定位
当栈不为空继续查找,当sb+1小于word的长度也退出
六、问题记录和实验总结
首先,python,我们得了解他得语法就,还有输入的结构还有方式,在这一定的基础上,我们需要会数学的知识
就最大公约数,最小公倍数是属于数学的知识,只有先知道数学的知识,再懂的编程语言,才可以完成
同时语法和函数,例如切片,就可以解决回文素数的判断,这跟C语言相比,要快了不少,这就是懂得语法的重要性,至于函数,测试中保留15位小数,进行四舍五入,用round函数,还有pow内置函数,解决平方的公式计算,可以说是非常方便
最后就是DFS也就是深度算法,回溯算法,这是属于数据结构的内容,总体来说python其实只是帮助你验证,或者去实现某一项的工具,其他的基础知识也很重要,最后一题这个算法,我是写了很长的,花的时间比较久,同时看到自己之前学习了数据结构,不用就会忘记,逻辑要清楚,才能写好