关于《零基础python》里的else有一个代码不太明白
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不知道有何用? while count > 1: 所以当 count 小于或等于 1的时候就会退出循环。count 一开始是 num 的一半,慢慢减一。如果没有它,while true 就是死循环,不会结束。
缩进怪怪的。要条件判断成立才会进入 if 的内部。 如果不修改count的值,if判断永远为假,死循环了 看这个缩进很奇怪,else 和 if 对其的话,这样找到的素数不准确啊。
楼主,你的程序是错的,运行这个程序你能得到正确答案?
正确的版本应该是这样的:
#!/usr/bin/env python
#coding:gbk
def showMaxFactor(num):
count = num // 2
while count > 1:
if num % count == 0:
print('%d 最大的约数是 %d' % (num , count))
break
else:
count -= 1
if count == 1:
print('%d 是素数' % num)
num = int(input('请输入一个数:'))
showMaxFactor(num)
你运行一下试试看。
再一个,你的代码缩进非常不规范,这是极不好的习惯。 你的缩进贼奇怪,楼上那个的是对的,这个代码的目地是求最大公约数
逻辑是这样的
先判断是否能被他的一半(count)整除,如果不能,就判断是否能被他的一半(count)减一整除,直到count = 0 还没有找到能整除他的数,就判断这个数为素数
count - 1 就是循环中的一个条件 RIXO 发表于 2018-9-11 19:15
你的缩进贼奇怪,楼上那个的是对的,这个代码的目地是求最大公约数
逻辑是这样的
先判断是否能被他的一半 ...
谢谢你! RIXO 发表于 2018-9-11 19:15
你的缩进贼奇怪,楼上那个的是对的,这个代码的目地是求最大公约数
逻辑是这样的
先判断是否能被他的一半 ...
谢谢亲的帮助
页:
[1]