先看基本解释
(1)continue和break都用于循环语句中,python中主要的循环结构有for循环和while循环两种。
(2)执行break语句,会使得break语句所属层次的循环提前结束。
(3)执行continue语句,作用是提前结束本次循环,提前进入下一次循环。
进行代码实验
1.
#代码一:
a = [1, 2, 3]
for i in a:
print("铅笔")
break
print(i)
#代码二:
a = [1, 2, 3]
for i in a:
print("铅笔")
continue
print(i)
结果如下:
#代码一
铅笔
1
#代码二
铅笔
铅笔
铅笔
3
对比可以看出:代码一只执行了1次,而代码二循环了3次
2.
#代码一
a = [1, 2, 3]
for i in a:
print("铅笔")
break
print("这是一只铅笔")
print(i)
#代码二
a = [1, 2, 3]
for i in a:
print("铅笔")
continue
print("这是一只铅笔")
print(i)
#代码三
a = [1, 2, 3]
for i in a:
print("铅笔")
print("这是一只铅笔")
print(i)
结果如下:
#代码一
铅笔
1
#代码二
铅笔
铅笔
铅笔
3
#代码三
铅笔
这是一只铅笔
铅笔
这是一只铅笔
铅笔
这是一只铅笔
3
对比代码一二三,得出break和continue语句执行后,后面在循环内的语句直接忽略。
3.以判断一个数n是否为素数为例进行进一步研究
基础知识:
(1)素数是指:在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
(2)1不是素数
基本思想:
(1)用if判断,如果这个数等于1,直接输出不是素数;如果这个数不等于1,进行下一步判断。
(2)指定一个参数,让它从2循环到n-1,只要有一个i满足表达式n%i == 0,则直接输出这个数不是 素数,如果没有i满足上述表达式,那么输出这个数是素数。
基本判断:
这里使用break语句,因为我们只要判断出有一个i满足表达式即可证明n不是素数,不需要都循环一遍。
def sushu(n): #定义一个函数
if n == 1:
print("不是素数")
elif n != 1:
for i in range(2, n):
if n % i == 0:
print("不是素数")
break
else:
print("是素数")
sushu(8)
结果如下
不是素数
如果用continue
def sushu(n):
if n == 1:
print("不是素数")
elif n != 1:
for i in range(2, n):
if n % i == 0:
print("不是素数")
continue
else:
print("是素数")
sushu(8)
结果如下
不是素数
不是素数
是素数
4.用两个循环进一步理解
问题描述:给定两个列表a和b,判断是否存在a中的一个元素与b中的一个元素相加等于给定元素n,如果存在,输出成功。
#代码一
def hanshu(n):
a = [1, 2, 3, 4, 5, 6]
b = [7, 8, 9, 10, 11, 12, 13]
for i in a: #语句1
for j in b: #语句2
if i + j == n: #语句3
print("成功") #语句4
break #语句5
hanshu(13)
分析:
(1)我们知道:1+12=13;2+11=13;3+10=13…
(2)语句1执行,此时i=1
(3)语句2执行,此时j=7
(4)语句3执行,但此时i+j !=13,所以回到语句2
(5)语句2执行,此时j=8
(6)语句3执行,但此时i+j !=13,所以回到语句2
以此类推…
(7)语句2执行,此时j=12
(8)语句3执行,此时i+j=13,与给定数字相同,所以执行语句4,输出“成功”
(9)语句5执行,跳出当前j的循环(也就是说j不会再等于13),执行语句1,此时i=2
以此类推…
结果:
成功
成功
成功
成功
成功
成功
#代码二
def hanshu(n):
a = [1, 2, 3, 4, 5, 6]
b = [7, 8, 9, 10, 11, 12, 13]
for i in a: #语句1
for j in b: #语句2
if i + j == n: #语句3
print("成功") #语句4
continue #语句5
hanshu(13)
分析:
过程和代码一相同
比较两个代码:
(1)两个代码所实现的功能相同,执行语句的模式也相同。
(2)但是如果将代码二continue的位置换成break,则这个函数的功能将会改变。(注意:python严格使用缩进来体现代码的逻辑从属关系,代码三和代码一中的break位置不同!)
def hanshu(n):
a = [1, 2, 3, 4, 5, 6]
b = [7, 8, 9, 10, 11, 12, 13]
for i in a: #语句1
for j in b: #语句2
if i + j == n: #语句3
print("成功") #语句4
break #语句5
hanshu(13)
分析:
(1)当执行到1+12=13时,输出“成功”,
(2)执行语句2,此时j=13
(3)执行语句5,break跳出了i的循环,也就是说i并没有等于2,3,4,5,6
结果如下:
成功
所以,在某种意义上来说,代码三并没有完成题目所给要求。