4-9 编程练习 计算1到100以内能被3或者7整除,但不能同时被3和7整除的数的个数,运行结果为39

4-9 编程练习 计算1到100以内能被3或者7整除,但不能同时被3和7整除的数的个数,运行结果为39

你好。

我通过什么方法分析这两段代码的结果差异呢?

相关代码:

num = 1
count = 0

while True:
    if (num % 3 == 0) or (num % 7 == 0):
        count += 1
    if num % 21 == 0:
        count -= 1
    if num > 100:
        break
    num = num + 1 
print(count)


相关代码:

num = 1
count = 0
while True:
    if num % 3 ==0:
        count += 1
    if num % 7 == 0:
        count += 1
    if num % 21 ==0:
        count -= 1
    if num > 100:
        break
    num = num + 1  
print(count)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小猿 2023-06-15 15:13:20

同学,你好!同学说的差异指的是程序的运行结果吗?同学已经输出count 的值。

https://img1.sycdn.imooc.com//climg/648ab9d0099bf1d806650789.jpg


祝学习愉快~

  • 我的问题是:

    第一段代码运行结果是39

    第二段代码运行结果是43

    我找不到差异点。。。


    2023-06-15 15:20:05
  • 同学,你好!因同学代码没有格式,所以无法确定同学的代码结构,以下是老师想到的两种代码结构

    num = 1
    count = 0
    while True:
        if num % 3 ==0:
            count += 1
            if num % 7 == 0:
                    count += 1
        if num % 21 ==0:
                count -= 1
        if num > 100:
                break
        num = num + 1
    print(count)

    当前代码差异为当数字为7的倍数无法进行count+=1操作,所以count值是少的

    https://img1.sycdn.imooc.com//climg/648ac2b7090eb45a09240707.jpg


    2、另一中代码结构为count 值增加,代码格式如下

    num = 1
    count = 0
    while True:
        if num % 3 ==0:
            count += 1
            print("count","@",count,num)
        if num % 7 == 0:
                    count += 1
                    print("count", "@1", count, num)
        if num % 21 ==0:
                print(num,"~~~")
                count -= 1
        if num > 100:
                break
        num = num + 1
    print(count)

    当num 为21时,count进行了两次累加,而最后只在count-=1处减了一次

    https://img1.sycdn.imooc.com//climg/648ac34f0941774506460333.jpg

    祝学习愉快~

    2023-06-15 15:57:53
  • 谢谢,谢谢。理解了

    2023-06-15 16:00:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师