Ch3-2数据处理的流程控制--循环控制结构解析.ppt

Ch3-2数据处理的流程控制--循环控制结构解析.ppt

* * End * * 数据处理的流程控制 循环控制结构 * * * 为什么需要循环? 有时需要重复做相同或相似的事情,程序中如何表达? 例如:在屏幕上显示1~5 print 1 print 2 print 3 print 4 print 5 繁琐且不具有扩展性(显示1~10000怎么办?) 循环:用很少的语句表达重复执行的很多语句. * * * for循环 语法 for 循环控制变量 in 序列: 循环体 语义:令循环控制变量取遍序列中的每个值,并对变量所取的每个值执行一遍循环体. 例如: for i in [1,2,3,4,5]: print i 显示1~10000:用[1,2,...,10000]显然不合适,可以用range() * * * * for循环的流程图 * for语句中序列的作用 计数器:序列只是用来控制循环的次数. for i in range(10): print 烦 循环体不引用循环变量. 数据:序列本身是循环体处理的数据. for i in range(10): print i*i 循环体引用循环变量. 两种遍历方式(见下一页) * 用for处理序列数据 直接遍历序列 data = [Born on:,July,2,2005] for d in data: print d, 通过索引遍历序列 data = [Born on:,July,2,2005] for i in range(len(data)): print data[i], 可以更灵活地处理序列数据,如 for i in range(0,len(data),3): ... * * 用for处理各种序列数据 字符串 for c in hello world: print c 元组 for i in (1,2,3): print i 嵌套序列:如元组的列表 for t in [(1,2),(3,4),(5,6)]: print t,t[0],t[1] * * * * while循环 for主要用于确定次数的循环 不确定次数的循环:while while 布尔表达式: 循环体 * * * while循环的特点 循环前测试条件 若不满足,则循环体一次都不执行 循环体必须影响下一次条件测试! 否则导致无穷循环 例如:for循环改写成while循环 i = 0 while i 10: print i i = i + 1 若忘了最后一条语句会怎样? 常用循环模式:交互循环 根据用户交互来决定是否循环下去 例:求和 sum = 0 moredata = yes while moredata[0] == y: x = input(Input a number: ) sum = sum + x moredata = raw_input(More?(yes/no)) print The sum is, sum * 常用循环模式:哨兵循环 交互循环不断要用户输入moredata,很烦人. 改进:设置一个特殊数据值(称为哨兵)作为终止循环的信号. 对哨兵唯一的要求就是能与普通数据区分 算法模式: 前导输入 while 该数据不是哨兵: 处理该数据 循环尾输入(下一个数据) * 哨兵循环例(1) 正常数据是非负数,则可以-1作为哨兵: sum = 0 x = input(Input a number (-1 to quit): ) while x = 0: sum = sum + x x = input(Input a number (-1 to quit): ) print The sum is, sum * * 哨兵循环例(2) 正常数据是任何实数,则可以空串作为哨兵: sum = 0 x = raw_input(Input a number (Enter to quit): ) while x != : sum = sum + eval(x) x = raw_input(Input a number (Enter to quit): ) print The sum is, sum * * 常用循环模式:后测试循环 输入验证问题: 检查用户输入是否符合要求,不符合就要求用户重新输入,直至符合为止. 这是一种后测试循环: 执行循环体后才测试条件 循环体至少执行一次 直至条件成立才退出循环 有些语言提供repeat…until语句 Python可用while实现 只需确保首次进入while时条件成立 x = ?1 while x

文档评论(0)

1亿VIP精品文档

相关文档