Python基础讲义(四):分支结构
分支结构
0x01内容导图

0x02流程图介绍
- 基本元素

- 绘制要求:不能出现程序语言的语法
0x03百分制转五级计分制
-
分支结构:语句块,冒号+缩进表示归属
- 单分支:if语句
- 双分支:if-else语句
- 多分支:if-elif-else语句
-
三元运算符:exp1 if option == True else exp2,双分支结构的简写形式
-
示例一:输入百分制的整数成绩,输出对应的ABCDE等级
- 流程图绘制
![]()
- 测试驱动:嵌入式方式,测试先行
- 代码实现:根据流程图,翻译成代码
def convert(s): """ >>> convert(85) 'B' >>> convert(92) 'A' >>> convert(79) 'C' >>> convert(60) 'D' >>> convert(0) 'E' """ level = "A" if s < 60: level = "E" elif s < 70: level = "D" elif s < 80: level = "C" elif s < 90: level = "B" return level if __name__ == "__main__": import doctest doctest.testmod(verbose=True)- 扩展:查找表技术,去掉大分支。先利用等级串缓存所有等级“EEEEEEDCBAA”,分别对应各个分数段;然后分数直接对10取商,该数就是等级串对应的索引位置,其实现代码修改如下(重新运行测试进行验证):
def convert(s): if s < 0 or s > 100: return "invalid score" #非法情况排出,避免第4行越界 levels = "EEEEEEDCBAA" return levels[s // 10]
课堂练习:
登录验证login(name, pwd)实现:name和pwd均为“admin”登录成功,否则登录失败
0x04日期到天数的转换
-
示例二:输入年月日,输出当天是今年的第几天
- 流程图绘制:学生尝试
- 测试驱动:嵌入式方式,测试先行
- 代码实现
def convert2days(year, month, day): """ >>> convert2days(2019, 1, 5) 5 >>> convert2days(2019, 2, 1) 32 >>> convert2days(2019, 3, 1) 60 >>> convert2days(2020, 3, 1) 61 >>> convert2days(2020, 2, 29) 60 >>> convert2days(2019, 12, 31) 365 """ days = 0 if month == 1: days = day elif month == 2: days = 31 + day elif month == 3: days = 59 + day elif month == 4: days = 90 + day elif month == 5: days = 120 + day elif month == 6: days = 151 + day elif month == 7: days = 181 + day elif month == 8: days = 212 + day elif month == 9: days = 243 + day elif month == 10: days = 273 + day elif month == 11: days = 304 + day elif month == 12: days = 334 + day if month > 2 and is_leap(year): days += 1 return days def is_leap(y): return (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0) if __name__ == "__main__": import doctest doctest.testmod(verbose=True)- 课后扩展:采用查找表技术,去掉大分支
0x05小结
- 熟练掌握流程图的绘制方法
- 熟练掌握分支结构的使用
- 理解查找表技术,掌握去大分支的实现方法

浙公网安备 33010602011771号