常见循环模式:交互循环 ·用户根据需要来循环执行程序某一部分 例如:avg2.py -不输入n,由程序自己数输入的值的个数 一设置一个是否继续循环的标志 初始化sum=0 初始化count=0 初始化moredata=yes while moredata =yes: 输入数据x 累积sum=sum+x 累积count=count+1 询问用户moredata? 输出平均值sum/count Lu Chaojun,SJTU 6
常见循环模式:交互循环 • 用户根据需要来循环执行程序某一部分 • 例如:avg2.py – 不输入n,由程序自己数输入的值的个数 – 设置一个是否继续循环的标志 初始化sum = 0 初始化count = 0 初始化moredata = yes while moredata = yes: 输入数据x 累积sum = sum + x 累积count = count + 1 询问用户moredata? 输出平均值sum/count Lu Chaojun, SJTU 6
常见循环模式:哨兵循环 ·avg2.py不断要用户输入moredata,很烦人. ·改进:设置一个特殊数据值(称为哨兵)作为终止 循环的信号 一对哨兵唯一的要求就是能与普通数据区分 。模式: 输入第一个数据 while该数据不是哨兵: 处理该数据 输入下一个数据 09 编程实例:avg3.py(负数哨兵),avg4.py(空串哨兵) Lu Chaojun,SJTU 7
常见循环模式:哨兵循环 • avg2.py不断要用户输入moredata,很烦人. • 改进:设置一个特殊数据值(称为哨兵)作为终止 循环的信号. – 对哨兵唯一的要求就是能与普通数据区分 • 模式: 输入第一个数据 while 该数据不是哨兵: 处理该数据 输入下一个数据 • 编程实例:avg3.py(负数哨兵),avg4.py(空串哨兵) Lu Chaojun, SJTU 7
常见循环模式:文件循环 ·avgl~avg4都是交互式输入数据的 一不便处理大数据量 一一个输入错误即导致需要重新运行程序 ·改进:建立一个数据文件 一数据处理应用中广泛使用 ·模式: 打开数据文件f for line in freadlines() 处理每个数据 0 编程实例:avg5.py Lu Chaojun,SJTU 8
常见循环模式:文件循环 • avg1~avg4都是交互式输入数据的 – 不便处理大数据量. – 一个输入错误即导致需要重新运行程序. • 改进:建立一个数据文件. – 数据处理应用中广泛使用 • 模式: 打开数据文件f for line in f.readlines(): 处理每个数据 • 编程实例:avg5.py Lu Chaojun, SJTU 8
常见循环模式:EOF哨兵循环 ·一次性读入 -readlines()一次性把文件的所有行都读入内存 一但内存是很有限的!可能无法运行 ·分批读入 - readline()每次读入一行 需要哨兵(如:空行),标志文件结束(EOF) line f.readline() while1ine!=ww: 处理该行 line f.readline() - 编程实例:avg6.py Lu Chaojun,SJTU 9
常见循环模式:EOF哨兵循环 • 一次性读入 – readlines()一次性把文件的所有行都读入内存 – 但内存是很有限的!可能无法运行. • 分批读入 – readline()每次读入一行 – 需要哨兵(如:空行),标志文件结束(EOF) line = f.readline() while line != “”: 处理该行 line = f.readline() – 编程实例:avg6.py Lu Chaojun, SJTU 9