鱼C论坛

 找回密码
 立即注册
查看: 804|回复: 9

关于if,whlie使用break的跳出的问题

[复制链接]
发表于 2018-7-27 21:49:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. def showMaxFactor(num):
  2.     count = num // 2
  3.     while count > 1:
  4.         if num % count == 0:
  5.             print('%d最大的约数是%d' % (num, count))
  6.             break
  7.         count -= 1
  8.     else:
  9.         print('%d是素数!' % num)

  10. num = int(input('请输入一个数:'))
  11. showMaxFactor(num)
复制代码




例如num=25,经过if循环后,count的值是5,这时有一个break,跳出的循环是if,那么while还在执行循环,while是接着执行count -=1,是直到count等于1的时候退出循环的吗,那这样while就是完整循环了,还会执行else的内容,这样不就出错了吗?请问我哪一步思路出错了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-7-27 21:54:58 | 显示全部楼层
break是跳出循环,而if不是循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 21:56:03 | 显示全部楼层
num=25,count上来是12,每次循环count-=1是count自减1,这是基础语法,你好像理解错了
先巩固基础吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 22:15:59 | 显示全部楼层
else不是必须的呀,再说了你不觉得你的else有问题吗?比如25 24 22...这些是素数吗?
你如果想跳出循环  直接while 然后if 直接break 就不要else就可以了啊。
别把while循环 、for遍历、if条件判断给搞混了哦。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-27 22:19:33 | 显示全部楼层
首先count等于num/2砍掉小数,然后只要count大于1就继续while循环。while循环里面假如num/count的余数是0的话就打印num和count再退出循环。假如不是0的话就将count-1。假如while循环break的话就打印“是num是素数”。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-27 22:23:00 | 显示全部楼层
冬雪雪冬 发表于 2018-7-27 21:54
break是跳出循环,而if不是循环。

您说的对,我把if搞成循环了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-27 22:23:32 | 显示全部楼层
塔利班 发表于 2018-7-27 21:56
num=25,count上来是12,每次循环count-=1是count自减1,这是基础语法,你好像理解错了
先巩固基础吧

几次循环后count就是5啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-27 22:24:29 | 显示全部楼层
无符号整形 发表于 2018-7-27 22:19
首先count等于num/2砍掉小数,然后只要count大于1就继续while循环。while循环里面假如num/count的余数是0的 ...

请问while是循环,if是条件分支判断,for是迭送对吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-27 22:25:25 | 显示全部楼层
stonejianbu 发表于 2018-7-27 22:15
else不是必须的呀,再说了你不觉得你的else有问题吗?比如25 24 22...这些是素数吗?
你如果想跳出循环   ...

我是把if搞成循环了,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-29 01:49:18 | 显示全部楼层
def showMaxFactor(num):
    count = num // 2
    while count > 1:
        if num % count == 0:
            print('%d最大的约数是%d' % (num, count))
            break   '这里如果满足if后边的条件就会直接跳出while,后边的count-=1不会被执行,直接跳到跟while齐平的else那一句上,如果此时count>1条件不成立就执行else里边的,如果count>1那么else里边的内容就不会被执行,程序思路没错。
        count -= 1   '这里如果前边不满足if后边的条件就执行这句,然后继续while里边循环,直到if后边的条件满足或者count>1的条件不成立,跳出循环,再去判断是否执行else里边的语句。
    else:
        print('%d是素数!' % num)

num = int(input('请输入一个数:'))
showMaxFactor(num)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-1 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表