在Python中使用循环
几乎任何一个有用的程序也都会至少包含一个循环语句。相信你对循环这个概念并不陌生,在Python里,和其他编程语言类似,我们可以使用for
和while
实现循环。
使用for循环
相比C中的版本,Python中的for
循环更接近自然语言,它采用了for 元素 in 集合
这样的语法形式,例如,遍历一个range
或list
:
for num in range(1, 5):
print(num)
for num in [1, 2, 3, 4]:
print(num)
可以看到,和if
类似,for
循环语句的末尾,也要使用:
表示结束,并且,所有属于for
循环的代码,必须有相同的缩进。至于含义,则很好理解,这两个循环打印出来的结果,都是1234。
当我们使用for
遍历dictionary的时候,遍历的实际上是它的key,来看个例子:
user = {'email': '11@boxue.io', 'name': 'Mars'}
for info in user:
print(info)
# email
# name
可以看到,在for
循环中的info
对应的就是user
中key的名字。但要说明的是,for
循环遍历user
时得到的key的顺序,可能和定义user
时是不同的,因为dictionary是一个无序集合,我们不能依赖key的定义顺序编写代码。
以上,就是Python中for
循环的基本用法。但除此之外,for
还有一个自己独特的语法,它也允许我们定义一个else
分支,这个分支只有在for
自然结束的时候,才会执行。
什么是自然结束呢?简单来说,就是遍历了所有的情况,来看个例子:
for num in range(1, 5):
print(num)
else:
print('All numbers are iterated.')
这样,在遍历完range
中的所有数之后,我们就会在控制台看到All numbers are iterated.这样的结果。但是,如果我们在循环中添加个条件中途退出:
for num in range(1, 5):
if num == 2:
break
print(num)
else:
print('All numbers are iterated.')
这样,for
循环就不算自然结束,我们也就看不到else
分支的执行了。为什么要给for
循环添加一个else
呢?Hmm... 貌似的确没有一个必须的理由。一个看似还合理的用法,就是当for
循环自然结束表示某种应用错误的时候,我们可以在else
分支中抛出一个异常,这样可以让代码变得好看一些。稍后,我们讲到错误处理的时候,会提到这种用法。
了解了for
的用法之后,接下来,我们来看另外一种循环方式:while
。
使用while循环
while
的用法和C中几乎是完全一样的,它接受一个boolean表达式,只要表达式的值为True
就会一直执行下去:
num = 1
while num < 10:
if num % 2 == 0:
num += 1
continue
print(num)
num += 1
这里,在循环中使用continue
表示跳过当前循环中的剩余指令,直接从下一次循环开始。于是,我们就只能在控制台看到1-9中所有的奇数了。