published on in Python

初学篇・循环控制语句

返回教程主页

上篇 初学篇・条件控制语句

在Python中可以通过whilefor两种循环语句来处理循环问题。

while循环

while语句用于在表达式保持为真的情况下重复地执行语句块,和if语句类似可以选择性加上else:

while <判断表达式>:
    <语句块>
else:
    <语句块>

while语句中会重复地检验表达式,并且如果其值为真就执行第一个子语句块;如果表达式值为假(这可能在第一次检验时就发生)则如果else子语句块存在就会被执行并终止循环:

n = 3
while n > 0:
    print('then', n)
    n = n - 1
else:
    print('else', n)

运行结果:

then 3
then 2
then 1
else 0

可以使用break中断循环,当某个循环语句中运行到break时将立即跳出当前循环且不执行else的子语句块:

n = 10
while True:
    print('then entry')
    if n == 5:
        break
    n = n - 1
else:
    print('else entry')

运行结果:

then entry
then entry
then entry
then entry
then entry
then entry

可以使用continue跳过当前循环的子语句块中剩下的语句直接回到判断表达式的位置进行下一轮循环:

n = 3
while n > 0:
    n = n - 1
    print('before')
    continue
    print('after')

运行结果:

before
before
before

for循环

for语句用于对序列(例如字符串、元组或列表)或其他可迭代对象中的元素进行迭代,for语句也可以选择性的加入else:

for <单个或多个变量> in <可以被迭代的对象>:
    <语句块>
else:
    <语句块>

Python中常见的序列有列表list、元组tuple、字符串str。关于字符串之前有过描述;所谓元组tuple可以看作是由圆括号()括起来并通过逗号,分隔的一串对象;而list则可以看作是用方括号[]括起来并通过逗号,分隔的一串对象;

_list = [1, 2, 3]
print(_list, type(_list))
_tuple = (1, 2, 3)
print(_tuple, type(_tuple))
_str = "123"
print(_str, type(_str))

运行结果:

[1, 2, 3] <class 'list'>
(1, 2, 3) <class 'tuple'>
123 <class 'str'>

可以通过for语句轻松将序列结构中的每一个元素取出实现遍历序列元素:

for number in [1, 2, 3]:
    print(number)
    
for character in "abc":
    print(character)

运行结果:

1
2
3
a
b
c

类似while,在for循环过程中如果在子语句块遇到break则会立刻中断循环,如果遇到continue则会跳过当前子语句块的剩余部分进入下一次循环:

for i in [1, 2, 3]:
    print(i)
    break
print('end of for')

for i in [1, 2, 3]:
    print('before')
    continue
    print('after')
print('end of for')

运行结果:

1
end of for
before
before
before
end of for

有时候为了方便我们会用range函数去构造一个可以遍历的对象来进行循环操作:

for i in range(2):
    print(i)
    
for i in range(2):
    print(2 + i)

运行结果:

0
1
2
3

range函数可以接收三个整数类型的参数,具有以下几种形式:

  • range(n): 生成0到n的整数序列,注意不包含n;
  • range(a, b): 生成范围在a与b之间的整数序列,包含a不包含b;
  • range(a, b, s): 生成范围在a与b之间的整数序列,且跨度为s,包含a不包含b;
for i in range(3):
    print(i)
    
for i in range(3, 6):
    print(i)
    
for i in range(6, 12, 2):
    print(i)

运行结果:

0
1
2
3
4
5
6
8
10

下篇 初学篇・函数的定义与调用