CH3_控制结构_1

advertisement
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
Download