while循环
完整的while循环结构如下:
while condition:
body
else:
post-code
condition是一个布尔表达式,也就是运算结果为值True或False。只要condition为True,body部分的代码就会重复执行下去。如果condition的计算结果为False,则while循环将会执行post-code部分的代码,然后停止执行。如果condition一开始就为False,那么body部分代码就根本不会被执行,只会执行post-code部分的代码。body和post-code部分的代码都是由换行符分隔的一条或多条Python语句,并且代码缩进的级别也相同。Python解释器根据代码缩进的级别来识别这两个部分。这里不需要使用其他分隔符,如大括号或方括号。
另外,while循环的else部分是可选的,且不常用到。因为只要body部分没有包含break语句,那么循环
while condition:
body
else:
post-code
和循环
while condition:
body
post-code
在while循环的body部分,可以使用两种特殊语句,也就是语句break和continue。如果执行了break语句,那么while循环就会立即终止,甚至都不会再执行post-code部分(当存在else子句时)。如果执行了continue语句,则会导致body部分的剩余语句被跳过,进行下一次condition计算,循环继续进行。
if-elif-else语句
通用的if-elif-else结构的形式如下:
if condition1:
body1
elif condition2:
body2
elif condition3:
body3
.
.
.
elif condition(n-1):
body(n-1)
else:
body(n)
如果condition1为True,则执行body1;否则,如果condition2为True,则执行body2;否则……依此类推,直至遇到判断为True的条件或者else子句并执行body(n)。与while循环一样,body部分也由一条或多条Python语句构成,由换行符分隔并处于相同的缩进级别。
当然,并不是每个条件从句都必须存在。elif、else部分是可以省略的,两者可以都省略。如果没有符合条件的语句可执行(没有条件为True,也没有else部分),那就什么都不做。
for循环
在python中,for 循环遍历的是任何可以迭代对象的返回值,也就是可以任何生成值序列的对象。
例如,for循环可以挨个遍历列表、元组或字符串的元素。这里的可迭代对象还可以是特殊的range函数,或者被称为生成器(generator)或生成器表达式的特殊类型函数。这种生成器函数的功能非常强大,常见的形式为:
for item in sequence:
body
else:
post-code
对sequence的每个元素都会执行一次body部分的语句。一开始item会被设为sequence的第一个元素,并执行body部分;然后item会被设为sequence的第二个元素,并执行body部分,等等,对sequence的其余元素都会逐个依此处理。
range函数
有时候循环中需要显式的索引(如值在列表中出现的位置)。这时可以将range函数和len函数结合起来使用,生成供for循环使用的索引序列。以下代码将会打印列表中所有出现负数的位置:
x = [1, 3, -7, 4, 9, -5, 4]
for i in range(len(x)):
if x[i] < 0:
print("Found a negative number at index ", i)