在Python中可以通过while
与for
两种循环语句来处理循环问题。
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