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型,就会报错。

 

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好人不心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值