循环是计算机可以帮我们做重复的大量的计算操作,比如要计算 1 + 2 + 3,我们可以直接写表达式,计算从 1 加到 1000,如果你一个一个加的方式去写代码,老板就要气疯了,此时我们就需要用循环了。
Python 的循环有两种:一种是 for 循环,一种是 while 循环。
for 循环
- for 循环的写法为
for x in Y
,就是把 Y 里面的每个成员(dict 带入的是键)带入 x(无论该成员有多复杂), 一般 Y 是集合(比如 str,list,tuple,dict,set 以及自定义可以遍历的类型)。
complex_list = ["ruhua", "xingxing", "zhaoritian", (1,), [2, 3], {"name": u"hauhua", "age": 18}]
for item in complex_list:
print(item)
- 用 for 循环直接遍历 dict 带入的是键,如果想带入值和成员,可以使用 dict 的 values 函数和 items 函数。
students_dict = {"name": "ruhua", "age": 18}
for student in students_dict:
print(student) # 带入的是键
for student in students_dict.keys():
print(student) # 带入的是键
for student in students_dict.values():
print(student) # 带入的是值
for student in students_dict.items():
print(student) # 带入的是成员
- 用 for 循环计算从 1 加到 1000 的总和,我们可以用 range 函数,
range(1000)
实际上是生成一个 0 到 999 的 range 对象;我们也可以使用 range 函数生成某个范围的数放入 range 对象里面,比如range(2, 5)
,注意是左闭右开。
for i in range(1000):
print(i)
print(range(2, 5))
- 注意:在 Python 2 中多了一个 xrange 函数,xrange 函数的作用和 range 相同,只是 xrange 函数返回的是一个迭代器;而 Python 2 的 range 函数返回的则是一个 list 类型对象。
while 循环
- while 循环,只要条件为真,就不断循环,直到条件为假时退出循环。
suppermen = ["如花", "星星", "赵日天"]
counts = len(suppermen)
while counts:
if counts > 0:
print(suppermen[counts - 1])
counts -= 1
- 重要的事情再说一遍,while 判断的是真假,对于各种数据类型的假值有: 整数 0, 浮点数 0.0, 字符串 "", 动态数组 [], 元组 (), 集合 set([]), 字典 {} 和自定义类型空对象,对于所有类型的非假值即为真值。
continue 语句
- continue 语句可以结束本次循环,然后回到 while 或者 for 判断语句位置进行判断,重新开始下一次循环。
# 打印出 1 到 10 之间的偶数
for item in range(1, 11):
if item % 2 != 0:
continue
print(item)
- continue 语句会破坏逻辑,容易导致程序易读性差,大多数循环并不需要用到 continue 语句,我们可以通过改写循环条件或者修改循环逻辑去掉 continue 语句。
# 打印出 1 到 10 之间的偶数
for item in range(1, 11):
if item % 2 == 0:
print(item)
break 语句
- break 语句可以使循环运行到该处结束循环,跳到循环之外。我们看个例子:找出字符串中 是否有 "学" 字符串,有的话打印出下标并退出循环,否则不输出。
strone = u"老鸟python"
for index, item in enumerate(strone): # enumerate 函数返回一个元组,该元组有两个成员:索引和成员。
if item == u"学":
print(index)
break
- break 语句虽然在程序中会经常用到,但 break 也会破坏逻辑,尽量少用。
本节重要知识点
- for 循环和 while 循环的使用。
- continue 语句和 break 语句的作用。
作业
找出姓名为 "星星" 的超人,找到后打印出姓名并退出循环,否则打印 "无此人"。
suppermen = ["如花", "星星", "赵日天"] # 请在下面完成代码
阅读原文:
循环www.birdpython.com