[博学谷学习记录]超强总结,用心分享|软件测试之python错题解析

目录

一、题目

二、错误答案

三、错误答案解析

四、正确方法及解析

(一)方法一及解析

(二)方法二及解析


        本周开使python基础知识的学习,正式进入学习代码编写的阶段了。本周有一个较典型的题目,困扰我很久,所以在这里做一个总结,希望对您有帮助。

一、题目

通过代码实现得出100-200之间的素数?
提示:素数的特征是除了1和其本身能被整除,其它数都不能被整除的数

二、错误答案

for i in range(100,201):
    for j in range(2,i):
        if i % j == 0:
            break
        print(i)

        以上是我写的答案,这样得出的结果,素数找全了,但是每个素数都被打印了100遍。

三、错误答案解析

        以上错误答案的问题出现在 for j 的内循环里。这样写的话,如果i不能被j整除,那么i就会被打印一遍,直到遇见第一个能整除i的j,内循环才会被打断。最后的结果就是i遍历到第几个j被打断,就会被打印几遍,素数一直都不会被打断,所以所有的素数都被打印了100遍。

四、正确方法及解析

        我的初衷就是内循环完整的走完流程,再打印i,思路是对的,但是不会写。后来参考老师的思路,找到了以下两种解决办法:

(一)方法一及解析

for i in range(100,201):
    is_breaked = False 
    for j in range(2,i):
        if i % j == 0:
            is_breaked = True
            break
    if is_breaked == False:
        print(i)

        此方法的思路是用一个变量记录我想要的状态,如果is_breaked的状态没有被改变,还是False,那么就代表循环完整的走完了,那就代表此数为素数。

(二)方法二及解析

for i in range(100,201):
    j = 0 
    for j in range(2,i):
        if i % j == 0:
            break
    if j == i-1:
        print('%d是素数' % i)

        此方法的思路是用 j在结束循环时被赋值的数值来记录,j的数值也能表示循环走没走完。当j=i-1时,就是代表完整走完了。j的初始值可以任意取值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值