Introduction to Computer Programming School of Computer and Information Science Southwest Forestry University 2012.9 Chapter 3 Conditional Statements Danju Lv Autumn semester , 2012 Chap3 Conditional Statements In this chapter: Definition of Conditional Statements Logical judgment and conditional expression 条件语句的定义 if statement 逻辑判断与条件表达式 else statement 单分支语句 双分支语句 elif statement 多分支语句 Mix of conditionals 条件嵌套语句 Def. of Conditional Statements This chapter describes a type of control statements in Python , conditional statement. Based on the value of the conditional expression ,True(non-zero ) or False (zero), the conditionals make decisions to control the execution of block of code. 条件语句是根据条件表达式的值是True/非零还是 False/零做出决策,控制代码块的执行。 Chap3 conditional statements 条件语句是根据条件表达式的值是True/not zero 还是False/zero做出决策,控制执行的代码块。 4 key points Expression Value of the Expression Control Block of Code/suit 4个要点: 表达式 值 控制 代码块 1. Expression Def. of Expression: A typical expression is generally composed of: operator and operand (object) Common operators in conditional expressions 1. Math :+,-,*,/,// , %, **,~, 2. Comparison : >, <, ==, != , <=, >= 3. Test:in , not in ,is , is not 4. Conjunction :and, or, not Exp. of expresstion 1. Math Expressions: 3+2 7%3 3**2 2. Comparison Expressions: 3<6 2<>7 “abc”==“bcd” a=[1,2,3];b=[1,2,3]; a!=b 3. Test Expressions: a=[1,3,5]; 3 in a ; 5 not in a a=“abcdef”; b=a; a is b; a is not b Conjunction Operation 短路特性 Short circuit Conj. Operaters:and or not。 and 和 运算特点:见False为False False at first False 表示左边的运算、值或者对象为True,接着对右边求值。 如果左边为False/zero,就停止运算并且输出结果False,不再 继续运算。 or 或 运算特点:见True为True True at first True 表示对左边表达式求值,如果结果为False, 则继续对右 边的表达式求值,得最后结果。如果左边表达式结果为True/not zero,则停止其后表达式求值,且最终结果为True。 not 非 单目运算符 在需要在表达相反条件时,用not运算符。 Exp. of expression Tell the values of the following expressions: 判断下列逻辑表示式的值 Expr. :2 or 0, 2 and 0, 3 or 2, 3 and 2, not 2, not 0 values:2, 0, 3, 2, False, True 逻辑运算表达式其值并非得到布尔型的结果 Conjunction in cond. expression When a judgment need to consider two or more of the conditions / factors, we should correctly use conj. operators to combine those conditionals . 当做一个判断时需考虑两个或两个以上的条 件/因素时,此时需要对条件进行合理的逻辑组 合运算。 Exp. Of Conj. Expression 逻辑组合表示举例 1. 成绩score在90~100之间? score>=90 and score<=100 2. 年龄age在25岁~30岁之间且专业subject是计算 机或是电子信息工程专业? (age>=25 and age<=30 ) and (subject==" 计算机" or subject=="电子信息工程专业”) 注意:表示两者关系相等用“==”, 而非“=”, 初学者极易出错 Mix of operation混合运算 1. 运算符的优先级 在一个表达式中出现多种运算符时,按照运 算符的优先级高低依次进行运算。 注:表达式出现()时,运算级别是最高的,“=”级 别最低 高 Conj. Test Comp. math not And is, is not *,/,%,// Or in , not in <>, ==,>=,<=,<, > +, 低 高 Mix of operation混合运算 2. 结合规律 通常,相同级别运算符按照从左到右顺序计算 注:=赋值运算是从右到左的结合。 a=b=c a=(b=c) Values of the expressions 表达式的值 Core: Any value is an expression! 核心:有值便是表达式! 如:2, “abc” 在python中对于所有对象都做了True, False的映射 可用bool函数来决定任何对象、表达式的布尔值 对象类型 True False dict 除alse外 {} list [] string ‘’ int 0 double, float 0.0 class None Values of expr. in control statements 控制语句中表达式的值 表达式的值若视为Boolean型,则表达式的 值就只可能是True or False 在控制语句中表达式(条件表达式)的值就 是视为Boolean型——逻辑判断 由表达式的值控制执行的代码块 3.control: logical judgment 控制:逻辑判断 The basis of the control: logic judgment 逻辑判断:体现了一种思维能力。 计算机有没有这种思维能力呢? 常用逻辑判断的类型 两个对象之间的关系(==,!=,<,>,>=,<=) 注: !=还可表示成:<> 成员测试 (in ,not in) 同一性测试(is,not is) 逻辑关系(not, and , or):常用于组合表达式中 3. control:conditional statements 选择控制 if statement if 条件语句:the syntax of if statement: if expression: if 表达式: expr_true_suite ture语句块 False 表达式 True ture语句块 图3-1 单分支语句的执行方式 单分支语句,菱形框表示if, 表达式放在框内,紧接菱形框的 矩形框表示冒号后的true语句块。 if 单分支语句 if expression: expr_true_suite The suite of the if clause, expr_true_suite, will be executed only if the above conditional expression results in a Boolean true value. Otherwise, execution resumes at the next statement following the suite. If 语句:若表达式为真/非零则 执行冒号后的语句块,若表达式为 假则跳过该语句块的执行。 False 表达式 True true语句块 if 简单分支的执行情况分析 试将以下程序用框图表示,并说明程序运行的结果 n=1 x=5 if x>0 : n = n+1 n=1 x=5 False x>0 True n=1 x = -5 if x>0 : n = n+1 n=1 x=-5 n=n+1 Indentation in ctrl. Statement of python 控制程序中的缩进量 Indentation Python语言利用缩进表示语句块的开始和退出(Offside规则),而非使用花括号或者某种关键字。 增加缩进表示语句块的开始(回车后自动完成/tab键) 减少缩进则表示语句块退出(backspace键) 简单分支举例 3-1两数大小比较,按从小到大的顺序输出。 开始 初始化a、b a>b False True 交换a、b的值 输出a、b 结束 图3-2 按升序输出两个数 程序运行结果: 从小到大输出: 3 5 a=3 b=5 if a>b: t=a a=b b=t print ("从小到大输出:") print (a, b) 简单分支举例 【例3-2】从键盘输入圆的半径,如果半径大于等 于零则计算圆面积。 开始 输入半径 False 半径不小于0 True 计算圆面积 输出圆面积 结束 import math r=eval(input(“请输入圆的半径:”)) if r>=.0: s=math.pi*r**2 print("s=pi*r*r=",s) 结果验证: 请输入圆的半径:4 s=pi*r*r= 50.26548245743669 思考 当输入r 为-2时,结果如何? 程序的输出可以改进吗? 如当输入r 为负值时,给出一个提示输入出错的 信息,当输入r 为非负值时,计算其圆面积。 双分支语句 else statement Syntax of else statement: if 表达式 : if expression: expr_true_suite Ture语句块 else: else : expr_false_suite False语句块 表达式 False True Ture语句块 False语句块 图3-4 双分支语句的执行方式 The else statement identifies a block of code( expre false suite) to be executed if the conditional expression of the if statement resolves to a false Boolean value. 双分支选择 else statement 表达式 if expression: expr_true_suite else: expr_false_suite False True Ture语句块 False语句块 图3-4表示了双分支语句,菱形框表示if,表达式放 在框内,左边的矩形表示“if表达式”冒号后的“True语 句块”,右边的矩形表示“else”冒号后的“False语句块 ”,若表达式为真则执行Ture语句块,若表达式为假 则执行False语句块。 双分支程序的理解 请画出以下程序的框图结构,该程序的执行路线如 何,结果是?若程序的x=2替换为x=-2,程序的执 行路线又如何,结果? X=2 x=2 if x > 0: y = 1+2*x else: y=0 print('y=', y) x>0 False True y=1+2*x print(‘y=’,y) y=0