循环结构
0x01内容导图
0x02while循环的使用
- 循环的组成要素:
- 循环控制:开始、结束、步进(迭代)
- 循环体:重复执行的动作
- 死循环:无限循环,必须避免
- while循环:更适用于循环次数不确定的场合
- 语句块
- 语法形式
#循环初始条件(开始)
#while 循环执行条件(为真执行,为假结束):
#循环体,必须缩进
#步进或迭代
- 示例:1-100求和
def mysum():
s, i = 0, 1 #循环初始条件
while i <= 100: #循环条件
s += i #循环体,累加
i += 1 #步进
return s
def run():
s = mysum()
print(s)
if __name__ == "__main__":
run()
- 课堂练习:
- 1-100偶数求和
- 1-100奇数求和
0x03for循环的使用
- for循环:循环简化形式,更适用于循环次数确定的场合
- 遍历可迭代对象,如列表、字符串
- 语法形式
# for 迭代变量 in 可迭代对象(集合):(迭代变量从头到尾依次代表集合中的元素,一行即表示了循环控制部分)
#循环体
- range(begin, end, step):产生指定范围的整数集合
- 范围:[begin, end),左闭右开
- step:步进(包含方向)
- 示例一:改写1-100求和
def mysum():
s = 0
for i in range(1, 101):
s += i
return s
- 示例二:对整数列表求和
- 列表:相当于其他语言的数组,多个元素的集合,可以象字符串样进行索引访问
- 代码实现:
def mysum(ls):
s = 0
for e in ls: #e从头到尾依次代表列表中的整数
s += e
return s
def run():
ls = [5, 3, 2, 8]
s = mysum(ls)
print(s)
if __name__ == "__main__":
run()
- 示例三:打印星号三角形
def disp_triangle(n): #打印直角三角型
for i in range(1, n+1):
print("*" * i)
- 课堂练习:打印等腰三角形
0x04跳转语句的使用
- continue:结束本次循环,继续下一次;如现实生活中的“下一个”
- break:结束本轮循环,不再继续;如现实生活中的“下班时间到了,明天请早”
- 示例:质数判断
- 算法分析:常规思路,怎么判断质数?
- 绘制流程图
- 测试驱动
- 代码实现
def is_prime(n):
"""
>>> is_prime(2)
True
>>> is_prime(9)
False
>>> is_prime(11)
True
>>> is_prime(1)
False
"""
flag = True
for i in range(2, n):
if n % i == 0:
flag = False
break #结束循环,不再继续
return flag
if __name__ == "__main__":
import doctest
doctest.testmod(verbose=True)
运行上述测试,可以发现第4个测试不能通过,我们的程序将1认为是质数了(由于默认为True,而1无法进入循环,因此出错)。我们只需要在处理前添加参数检查的语句即可修复这个错误:即第12行前,添加if n < 2: return False
即可。
- 课堂练习:循环改进(思考循环结束条件),提高效率
0x05小结
- 熟练掌握while、for循环的使用并能灵活应用
- 理解跳转语句的区别,能在合适场合正确使用
- 了解循环改进对效率的影响