上节课讲了配合循环语句使用的布尔值和布尔运算,为了能够更好地使用循环语句,本节课会讲述四种能够配合循环语句使用的语句,分别是break语句、continue语句、pass语句、else语句。
一、break语句
break语句的作用是结束循环,一般写作if...break,意为如果满足某一个条件,就提前结束循环。注意,if...break只能在循环内部使用。
来看下面的代码,本来for循环要循环5次,但是在第3次时会被break语句打断,提前结束循环。
for i in range(5):
print('我要循环5次!')
if i == 2:
break
执行这段代码,会打印3次【我要循环5次!】,因为当i的值为2时,会触发break语句,结束循环。
需要注意,break作为if的子句需要缩进4个空格,加上前面for循环子句缩进的4个空格,一共缩进了8个空格。
再看while循环搭配break语句的使用。
while True:
password = int(input('请输入你的密码:'))
if password == 123:
break
print('密码正确!')
while True开启一个无线循环,通过input()函数输入一个数据并由字符串转换成整数。如果输入的这个数据等于123,则break语句生效退出循环,打印出【密码正确!】。
如果输入的数据不等于123,则循环继续,直到输入的值为123时,结束循环。
二、continue语句
continue语句也是在循环内部使用的。当条件被满足时,触发continue语句并跳过后面的代码,回到循环的开始。看下面的代码:
for i in range(5):
print('我要循环5次!')
if i == 2:
continue
print('这句话在i等于2时打印不出来')
运行上面的代码,当i等于0和1时均会打印出【我要循环5次!】和【这句话在i等于2时打印不出来】。当i等于2时满足条件触发continue语句,不执行后面的【print('这句话在i等于2时打印不出来')】,直接回到for循环继续。
搭配while循环的用法如下:
while True:
password = int(input('请输入你的密码:'))
if password != 123:
continue
print('密码正确!')
上面的代码会无限循环,因为无论输入什么样的密码,都无法跳出while循环。区别在于输入123时会打印【密码正确!】。如果在代码运行时陷入无限循环,可按组合键Ctrl+C或是直接关闭显示程序输出的终端窗口。
三、pass语句
pass语句的作用是跳过,因为不太容易表述,所以看下面的代码:
password = int(input('请输入你的密码:'))
if password == 123:
pass
else:
print('密码错误!')
上述代码中,当输入的password值是123时,不执行任何操作。如果不是123,执行print()语句打印【密码错误!】。
虽然pass的作用不太明显,但也不能忽视。上面那段代码,如果把pass去掉,运行时会报错。
四、else语句
else语句在讲if条件判断语句时曾经提到过,其实它不仅可以和if配合使用,还能与for循环和while循环配合使用。看下面的代码:
for i in range(3):
password = int(input('输入密码123结束循环,你有3次机会'))
if password == 123:
print('break语句触发,循环结束,else语句不会生效。')
break
else:
print('3次都输入错误,循环结束,else语句生效。')
运行这段代码,如果你输入123,则会打印【break语句触发,循环结束,else语句不会生效。】。如果3次都没有输入123,则会打印【3次都输入错误,循环结束,else语句生效。】。
先不要看下面的答案,尝试把上面代码中的for循环改为while循环,然后运行。
答案是这样的,你写出来了吗?
i = 0
while i < 3:
password = int(input('输入密码123结束循环,你有3次机会'))
i = i + 1
if password == 123:
print('break语句触发,循环结束,else语句不会生效。')
break
else:
print('3次都输入错误,循环结束,else语句生效。')
到这里配合循环的四种语句就都讲完了,接下来的两节课会做两个练习,尝试将前面学过的知识结合起来运用。
因此,如果之前学习的内容记不清了,我建议你回过头复习一遍。我在学习时,就是在这里开始我在python学习中的第一次复习的。虽然多花费了一些时间,但我认为这是值得的。因为这让我能够独立完成接下来的练习,而不是只能参照答案。