控制结构 条件语句
控制结构 条件语句
单分支决策 ·语法 if : yes true? -:布尔表达式 no :语句序列. ·语义:计算的真假.若为真,则执行 ,并把控制转向下一条语句;若为假,则直 接把控制转向下一条语句. Lu Chaojun,SJTU 2
Lu Chaojun, SJTU 2 单分支决策 • 语法 if : – : 布尔表达式 – : 语句序列. • 语义:计算的真假.若为真,则执行 ,并把控制转向下一条语句;若为假,则直 接把控制转向下一条语句
条件表达式 ·简单条件:比较两个表达式 关系运算:=,>,= -数值比较 一字符串比较:按字典序 人字母序由编码(ASCIⅡ等)决定.如:大写字母在小写字母前, 是一个表达式,称为布尔表达式. -结果为true/false 人有些语言用0表示false,用1或非零值表示真 一复杂条件:详见后 Lu Chaojun,SJTU 3
Lu Chaojun, SJTU 3 条件表达式 • 简单条件:比较两个表达式 – 关系运算: = , >, != – 数值比较 – 字符串比较: 按字典序. ©字母序由编码(ASCII等)决定. 如:大写字母在小写字母前. • 是一个表达式,称为布尔表达式. – 结果为true/false ©有些语言用0表示false,用1或非零值表示真. – 复杂条件:详见后. Lu Chaojun, SJTU
编程实例:有条件执行程序 ·回顾:Python模块分为 -程序/脚本:可直接执行 人模块最后一行是main(),即启动程序的语句 人执行方式 +直接执行 ★Windows下双击模块图标 ★DOS命令行下:python.py +在会话或其他程序中import并执行 一库:不能直接执行 人模块中没有main()一行 人被其他程序import但不执行 Lu Chaojun,SJTU 4
Lu Chaojun, SJTU 4 编程实例:有条件执行程序 • 回顾:Python模块分为 – 程序/脚本:可直接执行 ©模块最后一行是main(),即启动程序的语句 ©执行方式 ª直接执行 «Windows下双击模块图标 «DOS命令行下: python .py ª在会话或其他程序中import并执行 – 库:不能直接执行 ©模块中没有main()一行 ©被其他程序import但不执行
编程实例:有条件执行程序(续) ·混合型模块:既能作为独立程序直接执行, 又能作为库被其他程序import而不执行 #myfile.py import一个模块时,Python将该模 def main(): 块中的一个特殊变量 name 设 置为该模块的名字: 直接执行模块时, name 被设 def other(): 置为' main if name ==、main': main() Lu Chaojun,SJTU 5
Lu Chaojun, SJTU 5 编程实例:有条件执行程序(续) • 混合型模块:既能作为独立程序直接执行, 又能作为库被其他程序import而不执行. #myfile.py def main(): … def other(): … if __name__ == ‘__main__’: main() • import一个模块时,Python将该模 块中的一个特殊变量__name__设 置为该模块的名字; • 直接执行模块时, __name__被设 置为’__main__’
两分支决策 ·语法 if: no yes 条件 语句序列1 语句序列2 else: ·语义 - 若为真,执行,控制转向 下一条语句;否则执行,控制转向 下一条语句 Lu Chaojun,SJTU 6
两分支决策 • 语法 if : else: • 语义 – 若为真,执行,控制转向 下一条语句;否则执行,控制转向 下一条语句. Lu Chaojun, SJTU 6
编程实例:完善quadratic.py ·quadratic会产生运行错误 quadratic2:增加条件 if discrim >=0: -仍不好:未告知用户无解的情况 quadratic3:增加条件 if discrim >=0: else: Lu Chaojun,SJTU 7
编程实例:完善quadratic.py • quadratic会产生运行错误 • quadratic2:增加条件 if discrim >= 0: … – 仍不好:未告知用户无解的情况 • quadratic3:增加条件 if discrim >=0: … else: … Lu Chaojun, SJTU 7
多分支决策 。语法 f: elif: elif else ·语义:找到第一个为真的条件并执行对应语句序 列,控制转向下一条语句;若无,则执行else下的语 句序列,控制转向下一条语句 Lu Chaojun,SJTU 8
多分支决策 • 语法 if : elif : ... elif else • 语义:找到第一个为真的条件并执行对应语句序 列,控制转向下一条语句;若无,则执行else下的语 句序列,控制转向下一条语句. Lu Chaojun, SJTU 8
编程实例:完善quadratic.py quadratic3:未考虑重根情形,即应区分判别式>O, =0,0: else: if discrim =0: else: 人对三分支尚可,但对更多分支不是好方法 -解决方法二:用f-elif-else 人quadratic4.py Lu Chaojun,SJTU 9
编程实例:完善quadratic.py • quadratic3:未考虑重根情形,即应区分判别式>0, =0, 0: else: if discrim = 0: else: ©对三分支尚可,但对更多分支不是好方法. – 解决方法二:用if-elif-else ©quadratic4.py Lu Chaojun, SJTU 9
程序运行错误的处理 ·常见代码:利用判断某种运行错误是否 发生 do sth() if some error: do sth else() 0 有的函数利用返回特殊值来表示某种运 行错误发生 -例如:设计otherSqrt(0,若无平方根返回-1. if othersqrt (b*b-4*a*c)<0: Lu Chaojun,SJTU 10
程序运行错误的处理 • 常见代码:利用if判断某种运行错误是否 发生. do_sth() if some_error: do_sth_else() • 有的函数利用返回特殊值来表示某种运 行错误发生. – 例如: 设计otherSqrt(),若无平方根返回-1. if otherSqrt(b*b4*a*c) < 0: Lu Chaojun, SJTU 10