鱼C论坛

 找回密码
 立即注册
查看: 2525|回复: 7

[已解决]关于《零基础python》里的else有一个代码不太明白

[复制链接]
发表于 2018-9-11 15:18:14 | 显示全部楼层 |阅读模式

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

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

x
def showMaxFactor(num):
  count=num//2
  while count>1:
   if num%count==0:
     print('%d最大的约数是%d'%(num,count))
     break
   count-=1
   else:
    print('%d是素数'%num)
num= int(input('请输入一个数:'))
showMaxFactor(num)

各位大佬,上面这段代码大概我能明白,但我不明白为啥count-=1在这里有什么作用?
麻烦告知一下,因为我感觉break要么就直接终止了,要么其他情况就else了,多一个count-=1不知道有何用?
最佳答案
2018-9-11 16:55:58

    楼主,你的程序是错的,运行这个程序你能得到正确答案?

    正确的版本应该是这样的:

   
  1. #!/usr/bin/env python
  2. #coding:gbk

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

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


    你运行一下试试看。

    再一个,你的代码缩进非常不规范,这是极不好的习惯。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-11 15:34:00 From FishC Mobile | 显示全部楼层
while count > 1: 所以当 count 小于或等于 1的时候就会退出循环。count 一开始是 num 的一半,慢慢减一。如果没有它,while true 就是死循环,不会结束。
缩进怪怪的。要条件判断成立才会进入 if 的内部。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 16:25:41 | 显示全部楼层
如果不修改count的值,if判断永远为假,死循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 16:45:34 | 显示全部楼层
看这个缩进很奇怪,else 和 if 对其的话,这样找到的素数不准确啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 16:55:58 | 显示全部楼层    本楼为最佳答案   

    楼主,你的程序是错的,运行这个程序你能得到正确答案?

    正确的版本应该是这样的:

   
  1. #!/usr/bin/env python
  2. #coding:gbk

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

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


    你运行一下试试看。

    再一个,你的代码缩进非常不规范,这是极不好的习惯。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 19:15:32 | 显示全部楼层
你的缩进贼奇怪,楼上那个的是对的,这个代码的目地是求最大公约数
逻辑是这样的
先判断是否能被他的一半(count)整除,如果不能,就判断是否能被他的一半(count)减一整除,直到count = 0 还没有找到能整除他的数,就判断这个数为素数
count - 1 就是循环中的一个条件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-12 07:31:12 | 显示全部楼层
RIXO 发表于 2018-9-11 19:15
你的缩进贼奇怪,楼上那个的是对的,这个代码的目地是求最大公约数
逻辑是这样的
先判断是否能被他的一半 ...

谢谢你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-12 07:31:44 | 显示全部楼层
RIXO 发表于 2018-9-11 19:15
你的缩进贼奇怪,楼上那个的是对的,这个代码的目地是求最大公约数
逻辑是这样的
先判断是否能被他的一半 ...

谢谢亲的帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 03:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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