for…else…循环
配合for/while循环语句使用
在for循环语句的后面紧接着else子句,在循环正常结束的时候(非return或者break等提前退出的情况下),else子句的逻辑就会被执行到。先来看一个例子:
def print_prime(n):
for i in xrange(2, n):
# found = True
for j in xrange(2, i):
if i % j == 0:
# found = False
break
else:
print "{} it's a prime number".format(i)
# if found:
# print "{} it's a prime number".format(i)
print_prime(7)
结果:
2 it's a prime number
3 it's a prime number
5 it's a prime number
一个简单打印素数的例子,判断某个数字是否是素数的时候需要遍历比它自己小的整数,任何一个满足整除的情况则判断结束,否则打印这是一个素数的info,有了else的加持,整个例子的逻辑相当的“self-expressive”,如同伪代码一般的好理解而且相比在判断整除的时候设置标志值然后在函数的结尾处判断标志值决定是否打印数字时素数的消息,代码更简洁没有那么多要描述如何做的“过程式”准备工作。
ps: 大家可以把例子中的被注释代码运行对比下效果。
应用到此种情况的程序,本程序可以统计范围内存在的素数个数并且将这些素数打印出来。
import math
print("本程序输入指定范围内的素数")
my_num_low=int(input("请输入范围下限:"))
my_num_hig=int(input("请输入范围上限:"))
com_num_count=0 #统计出现的合数的次数
pri_num_count=0 #统计出现的素数的次数
for i in range(my_num_low,my_num_hig): #i在范围内
if(i>3): #i小于3的时候直接输出是素数
my_sqrt=int(i**0.5) #取其开方后的值
for m in range(2,my_sqrt+1):
if((i%m)==0):
com_num_count+=1
break
else:
print(i,"是素数")
pri_num_count+=1
else:
print(i,"是素数")
pri_num_count+=1
print("一共有{0}个素数,{1}个合数".format(pri_num_count,com_num_count))
a=input()