break
break可用于(提前)退出循环
【例】输出指定范围的素数
lower = int(input("输入区间最小值:"))
upper = int(input("输入区间最大值:"))
for num in range(lower,upper + 1):
# 素数大于 1
if num > 1:
for i in range(2,num):
if (num % i) ==0:
break
else: #和for配对的else。如果上面的break执行则不执行此else
print(num) #输出素数
关于else和for配对:
for……break……else……
如果运行了 break,那么就不执行 else;如果没有运行 break,那么就执行 else 语句。
如果 for 的循环体中没有 break 语句,else 语句会执行。
while-else 的用法同理。
以上程序去掉else之后是错误的:
lower = int(input("输入区间最小值: "))
upper = int(input("输入区间最大值: "))
for num in range(lower,upper + 1):
# 素数大于 1
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
print(num)
区间内的整数都输出了。
【例】求最大公约数
num1=int(input("请输入第一个整数:"))
num2=int(input("请输入第二个整数:"))
flag=0
for i in range(num1,0,-1):
if((num1%i==0) and (num2%i==0)):
flag=1
break
if(flag==1):
print(f"{num1}和{num2}的最大公约数是{i}")
改写:不用标志flag,改用for……else……
num1=int(input("请输入第一个整数:"))
num2=int(input("请输入第二个整数:"))
for i in range(num1,0,-1):
if((num1%i==0) and (num2%i==0)):
print(f"{num1}和{num2}的最大公约数是{i}")
break
else:
print(f"{num1}和{num2}的最大公约数是1")
【例】一个列表用来保存学生信息,列表的元素是字典,字典中的键有姓名、年龄等。让用户输入一个名字,然后在列表中查询,如果有这个名字就告诉用户“找到了”,反之告诉用户“没有找到”。
程序一:用标志位编程:
info = [{"name":"小明", "age":15},
{"name":"小华", "age":17},
{"name":"小强", "age":16}]
find_name = input("please input a name:")
flag=False
for person in info:
if person["name"] == find_name:
flag=True
if flag:
print("Found it")
else:
print("Not found")
程序二:改用for……else……编程
info = [{"name":"小明", "age":15},
{"name":"小华", "age":17},
{"name":"小强", "age":16}]
find_name = input("please input a name:")
for person in info:
if person["name"] == find_name:
print("Found it")
break
else:
print("Not found")
【例】判断2~50之间的数是不是质数
for num in range(2,51):
for i in range(2,num):
if (num%i)==0:
print(num,"不是质数,",end='')
print(i,"乘",num//i,"是",num)
break
else:
print(num,"是质数")
break
【例】猴子分桃
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
i = 0
j = 1
x = 0
while (i < 5):
x = 4 * j
for i in range(0, 5):
if (x % 4 != 0):
break
else:
i += 1
x = (x / 4) * 5 + 1
j += 1
print(x)
运行结果:
3121.0
continue
continue用于结束本轮循环,继续下一轮循环
【例】累加100以内的奇数和,即1+3+5+7+……+99
sum=0
for i in range(1,101):
if i%2==0:#计算奇数和
continue#偶数不加
sum+=i#加奇数
print(sum)
【例】统计及格者的平均成绩
x=[98,72,80,45,30,89,92,54,48,82,67,76]
sum=0
k=0;
for item in x:
if(item<60):
continue
sum=sum+item
k=k+1;
if(k!=0):
print("及格人数",k,"人,平均成绩是",sum/k)