break关键字,其作用是在循环中的代码块遇到此关键字,立刻跳出整个循环,执行循环外的下一条语句。
其在while和for循环中的作用示意图如下:
比如我们通过键盘输入单词,输出刚才的单词,编写程序如下所示:
我们发现当我们输入除了quit和break这两个单词之外,输出结果上都会在输入单词之后,输出一条'您输入的单词是:xxxxx'这样的语句,当我们输入break之后,输出的是'循环将通过break关键字退出'和'程序已退出',我们知道'程序已退出'是while循环外print输出的语句,这里没有输出'您输入的单词是:xxxxx',但是程序结构上break是在print('您输入的单词是:'+string)之前的,这只能说明程序执行break之后,后面的代码不会被执行,直接跳出循环,执行循环外的代码。
我们知道如果while的条件测试为False,在有else语句的条件下,将会先去执行else语句,再去执行循环外语句,编写程序如下所示:
当输入quit之后,因为string == 'break'这个条件测试为False,所以执行if语句外的print('您输入的单词是:'+string)这条语句,所以输出结果上显示:'您输入的单词是:quit',当这条语句执行完之后,再去进行while循环的条件测试,此时string是quit,显然条件测试string != 'quit'为False,所以跳出while循环,因为有else存在,所以执行else语句中的print('程序通过输入quit方式退出'),所以在输出结果上会显示'程序通过输入quit方式退出',执行完else语句之后,再去执行while循环外的语句print('程序已退出'),所以输出结果上会显示'程序已退出'。
那么,当我们输入break,会是什么结果?测试结果如下:
我们发现输出结果后半段和没有else语句的程序相同,因此break关键字不但跳出了while循环,而且还跳过else语句执行的代码,直接执行循环外代码。
比如我们有一个签到的名单,要查询特定的学员'刘柏宏'来没来上课,只要查询到该学员来上课了就不再继续往下查,编写程序如下所示
那么如果签到名单中,一直没有查到学员'刘柏宏'来上课,该如何实现?我们可以结合else来实现编写程序如下所示:
因为签到名单中没有'刘柏宏'所以for循环结束后,执行else语句,输出'查询名单结束,签到名单中没有刘柏宏',再执行循环外的print('查询结束'),输出'查询结束'
同样的程序逻辑,我们把签到名单中含有'刘柏宏'的测试下,看是否影响含有的情况,编写程序如下所示:
发现可以正常查询到'刘柏宏'在签到名单中。
当'刘柏宏'在签到名单中时,sign_name== '刘柏宏'在查询到sign_name为'刘柏宏'时条件测试为True,执行if语句下的代码块,print('刘柏宏已经来上课了'),输出结果上显示'刘柏宏已经来上课了',接下来执行break关键字,输出结果上只显示'查询结束',说明break不但跳出了for循环,而且还跳过了else语句,直接执行循环外的代码。
总而言之,不管是while循环还是for循环,当break关键字执行后,都会直接跳出循环,即使在else语句存在的条件下,也会跳过else语句,直接执行循环外的代码。