【python入门系列课程 第九课 循环的好帮手break和continue】

2020-03-12 15:19:25 浏览数 (1)

前言

本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。

在讲什么是break和continue之前,我们先来看几段代码。

使用break和continue效果

第一段代码:

代码语言:javascript复制
for i in range(2):
    print(1)
    print(2)

第二段代码:

代码语言:javascript复制
for i in range(2):
    print(1)
    break
    print(2)

第三段代码:

代码语言:javascript复制
for i in range(2):
    print(1)
    continue
    print(2)

理解break和continue

如何理解上面的代码产生不同的效果呢?

看下面的图。

解释:

break 语句可以跳出 for 的循环体。当程序运行到break语句位置时,接下来就直接退出循环到结束状态了,所以就出现上面只打印出 1 的结果。continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。当程序运行到continue语句位置时,程序就不在执行print(2),而是重新开始一轮循环,又执行一次print(1)语句,两次循环后,循环结束,最后的讲过就是打印两次 1 。

知道break和continue怎么用后,那么怎样在实际中发挥它的一个作用呢?

判断一个数字是否为质数

质数定义:

一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数。比如2, 3, 5, 7等都是质数。

代码:

代码语言:javascript复制
# 输入一个数字
num = int(input("请输入一个数字: "))
 
# 质数大于 1
if num > 1:
    # 查看因子 
    for i in range(2,num):
        if (num % i) == 0:
            print(i,"乘于",num//i,"是",num)
            print(num,"不是质数")
    else:
        print(num,"是质数")
   
# 如果输入的数字小于或等于 1,不是质数
else:
    print(num,"不是质数")

效果:

解释:

程序开始获取输入的一个数字,先看这个数字是否大于1,如果不符合条件就直接 打印不是质数。 如果符合初始大于1的条件后,接着用该数字除以2到比它本身小 1 的所有数,if条件来判断每个数字,看是否能够除尽,可以就进入if里面的语句块,打印几乘以几是12,12不是质数。 全部循环结束后又进入else里面,所以后面又出现12是质数的情况的,那要如何避免出现这种错误呢,使用break就可以解决了。

代码改进

前面把每一个因数都打应出来了,实际上只要有一个因数存在就可以判断不是质数了。

使用break改进:

代码语言:javascript复制
# 输入一个数字
num = int(input("请输入一个数字: "))
 
# 质数大于 1
if num > 1:
    # 查看因子 
    for i in range(2,num):
        if (num % i) == 0:
            print(i,"乘于",num//i,"是",num)
            print(num,"不是质数")
            break # 新增加break语句
    else:
        print(num,"是质数")
   
# 如果输入的数字小于或等于 1,不是质数
else:
    print(num,"不是质数")

效果:

解释:

在11行增加了一行break语句就可以实现了,结果非常清晰明了,因为2x6=12,所以12不是质数,接着break就直接退出循环不需要在判断了。

使用continue和break改进

代码语言:javascript复制
# 输入一个数字
num = int(input("请输入一个数字: "))
 
# 质数大于 1
if num > 1:
    # 查看因子 
    for i in range(2,num):
        if (num % i) != 0:
            continue
        else:    
            print(i,"乘于",num//i,"是",num)
            print(num,"不是质数")
            break
    else:
        print(num,"是质数")
   
# 如果输入的数字小于或等于 1,不是质数
else:
    print(num,"不是质数")

效果:

解释:

这里将原来的等于0改成不等于0了,如果不等于0就继续判断下一个数字,全部都不等于0,进入else,打印不是质数;否则打印几乘以几是12,12不是质数。

补充:

代码语言:javascript复制
num = int(input("请输入一个数字: "))

这里代码的意思将输入的字符类型的数字转换成数字类型的数字。通过用type的方法可以查看数据的类型,具体字符和数字的区别可以看第一课的数字和字符的区别或者在之后的数据类型中会详细的讲解。

0 人点赞