本章目录
- Part One:while循环
- Part Two:for循环
- Part Three:continue和break
- Part Four:else语句
循环结构可以使得程序在满足某个条件的情况下,反复执行相同的代码,比如计算1 + 2 + 3 + ... + 100就可以用循环来操作。
while循环
while循环就是操作循环的方法之一,它的语法格式和if语法格式极为相似:
while 循环条件:
# 循环体
Python会循环执行循环体,直到循环条件不满足为止。比如,我们计算1到100的和:
x = 1
total = 0
while x <= 100:
total = total + x
x += 1
print(total)
结果自然是:
5050
同样的,我们也可以用列表来操作:
# Python提供一个range()函数,可以生成一个整数序列,range(101)就是0 - 100
# 再通过list()函数可以转换为list
numbers = list(range(101))
total = 0
while len(numbers) > 0:
# pop(索引)是删除指定位置的元素,并返回该元素的值
total = total + numbers.pop(0)
print(total)
for循环
Python中的for循环跟Java里的增强for循环的写法比较类似,从语法角度上更符合人阅读文章的习惯,它的语法结构为:
for 变量 in 变量序列:
# 循环体
for 循环会遍历完变量序列中所有元素为止,比如之前的计算1 - 100可以改写为:
total = 0
for number in range(101):
total = total + number
print(total)
注意,使用for循环的时候,尽量不要改变列表的值,否则会有很多困惑,比如不改变列表的值:
numbers = list(range(101))
total = 0
for number in numbers:
print(number, end="\t")
print(numbers.index(number))
total = total + number
print(total)
结果为:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
...
5050
而改变列表的值呢
numbers = list(range(101))
total = 0
for number in numbers:
print(number, end="\t")
print(numbers.index(number))
# 该值索引位置的值加1
numbers[numbers.index(number)] += 1
total = total + number
print(total)
结果为:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
...
5050
理论上后一行的代码是不会影响到前一行的代码,但是结果就是改变。。。具体原理是什么,有待研究,等以后学好了再回来看看。
continue和break
- continue
在循环中使用continue,表示跳出本次循环,直接进入下一次循环。比如计算1 - 100的奇数之和:
odd_total = 0
for number in range(101):
# 如果number是偶数,跳出本次循环,继续下一次循环
if number % 2 == 0:
continue
odd_total = odd_total + number
print(odd_total)
最后的结果为:
2500
- break
遇到break的时候,程序会跳出循环,不管循环条件是不是满足,例如:
total = 0
temp = 0
# 定义一个无限循环
while True:
temp = temp + 1
total = total + temp
# 如果值到了100,跳出循环
if temp == 100:
break
print(total)
结果为:
5050
else语句
else语句可以和循环配套使用,比如用来遍历,然后判断某个元素是否存在。
- 使用时,最好配合break语句:
values = ["Java", "Android", "Python"]
index = 0
while index < len(values):
if values[index] == "C":
print("C exists.")
break
index += 1
else:
print("C does not exist.")
结果为:
C does not exist.
- 如果将比较对象改为Java:
values = ["Java", "Android", "Python"]
index = 0
while index < len(values):
if values[index] == "Java":
print("Java exists.")
break
index += 1
else:
print("Java does not exist.")
结果为:
Java exists.
- 如果去掉break语句,则else语句始终执行:
values = ["Java", "Android", "Python"]
index = 0
while index < len(values):
if values[index] == "Java":
print("Java exists.")
index += 1
else:
print("Java does not exist.")
结果为:
Java exists.
Java does not exist.
- 和for循环配套使用:
values = ["Java", "Android", "Python"]
for value in values:
if value == "Java":
print("Java exists.")
break
else:
print("Java does not exist.")
结果为:
Java exists.
- 如果把else放到循环里,和if配合使用:
values = ["Java", "Android", "Python"]
for value in values:
if value == "Android":
print("Android exists.")
break
else:
print("Android does not exist.")
结果为:
Android does not exist.
Android exists.
与我们的需求不符合,所以在遍历查找某个元素是否存在时,可以用循环配合else语句一起使用,其效果等同于 列表.index(元素)。