| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> python实现is_prime()函数,参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False -> 正文阅读 |
|
[数据结构与算法]python实现is_prime()函数,参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False |
如有错误欢迎指正 ? ? ? ? 先看一下质数的定义 ????????质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数) ? ? ? ? isprime函数必定要接收参数,那我们对参数的要求是大于1的自然数,我们无法保证别人输入的数据的类型,我们应该如何给参数设限呢,应该在函数内部设限还是在函数外部。 ? ? ? ? 这里可以看一下另一篇讨论的文章python写一个接收参数的函数,对传入的数据有要求,该怎么办,在內部检查还是靠外部_m0_59834108的博客-CSDN博客 ? ? ? ? 我最后的做法是在函数内部用assert做一个判断,如果接收的数据不符合要求,就会抛出异常,终止函数。我的代码如下 ? ? ? ? ?遵循单一出口规范,我用flag做标记。 ????????这里又有一个问题,在起始flag设为False还是True。刚开始写这个函数的时候我将flag设为False,后来写到for循环的时候,我发现应该将flag初始值设为True,因为我的算法是从在range(2, x)之间进行 x%i的判断,如果有一个数字可以整除,就说明x不是质数,我就应该将flag设为false,否则flag就应为True。如果将flag的初始值设为False,就与我的算法矛盾。 ? ? ? ? 在写for循环的时候还有一个问题,range(2, x),如果传入的x是2怎么办,range()函数会怎么执行,我试了一下,发现range(2, 2)不执行。刚好2就是质数,我初始flag就是True,不执行就不执行吧,刚好。 ? ? ? ? 在主函数中接收参数的时候用int()做“类型转换”,这一步其实已经做了一个很好的限制,输入的类型如果不是int型,就会报错。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:25:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |