夜光序言:
每一个心如止水的人,曾经都是个骄傲的疯子
正文:
简单条件语句
1 目标
前面我们看到的程序都是顺序程序,程序在执行时是一句句往下进行的,这种一句句顺序执行的语句是程序中第一类型的语句。
程序结构除了这种简单的顺序结构外,还有一种会转弯的分支结构,它可以根据执行条件来决定该执行哪些语句,不该执行哪些语句,分支语句是程序中的第二类语句。
目标就是来认识 Python 中条件语句的使用。
2 条件语句
简单条件语句的格式有几种格式:
格式一:
if 条件:
语句
其中条件后面有":"号,执行的语句要向右边缩进。这种格式的含义是当条件成立时,
便执行指定的语句,执行完后接着执行 If 后下一条语句;如条件不成立,则该语句不执行,
转去 If 的后下一条的语句,如图 2-1-1 所示。
图 2-1-1 If 语句执行过程
第一种格式中"语句"一般只有一条语句,If 语句也是一条语句,它在一行写完。第二种格式的"语句"可以是一条语句或多条语句,这样形成一个语句块。
格式二:
if 条件:
语句 1
else:
语句 2
它的含义是当条件成立时,便执行指定的语句 1,执行完后接着执行 If 后下一条语句;
如条件不成立,则执行指定的语句 2,执行完后接着执行 If 后下一条语句,程序流程如图2-1-2 所示。其中"语句 1"与"语句 2"都可以是语句块。
其中 else 后面有":"号,语句 1、语句 2 都向右边缩进,而且要对齐。一般语句 1、语句2 都可以包含多条语句。
例 2-1-1:输入一个整数,判断它是奇数还是偶数。
设输入的整数是 n ,n%2==0 则是偶数,不然为奇数,程序如下:
n=input("Enter:")
n=int(n)
if n%2==0:
print("Even")
else:
print("Odd")
例 2-1-2:输入一个整数,输出其绝对值。
n=input("Enter:")
n=int(n)
if n>=0:
print(n)
else:
print(-n)
2.1.3 【案例】两个数的最大值
1、案例描述
输入两个整数,输出最大的一个。
2、案例分析:
这是求两个数中最大值的问题,设输入的数为 a 与 b,则 a>b 时,最大值是 a,不然为 b。
3、案例代码
a=input("a=")
b=input("b=")
a=float(a)
b=float(b)
if a>b:
c=a
else:
c=b
print(c)
或者:
a=input("a=")
b=input("b=")
a=float(a)
b=float(b)
c=a
if a<b:
c=b
print(c)
复杂条件语句
1 教学目标
在程序中有些条件是复杂的,产生多个分支,教学目标是使用 Python 的复杂分支条件语句实现程序的多分支走向,例如根据学生的成绩进行等级评定。
2 复杂条件语句
复杂分支 If 条件语句的格式是:
if 条件 1:
语句 1
elif 条件 2:
语句 2
……
elif 条件 n:
语句 n
else:
语句 n+1
它的含义是当条件 1 成立时,便执行指定的语句 1,执行完后,接着执行 If 后下一条语句;如条件 1 不成立,则判断条件 2,当条件 2 成立时,执行指定的语句 2,执行完后,接着执行 If 后下一条语句;如条件 2 不成立,则继续判断条件 3,……,判断条件 n,如成立执行语句 n,接着执行 If 后下一条语句;如条件 n 还不成立,则最后只有执行语句 n+1,执行完后,接着执行 If 后下一条语句,程序流程如图 2-2-1 所示。
其中每个条件后有":"号,语句 1、语句 2、......等都向右边缩进,而且要对齐。一般语句 1、语句 2、......等都可以包含多条语句。
图 2-2-1 多分之 If 语句的流程
例 2-2-1:输入一个学生的整数成绩 m,按[90,100]、[80,89]、[70,79]、[60,69]、[0,59]的范围分别给出 A、B、C、D、E 的等级。
分析:输入的成绩可能不合法(小于 0,或大于 100),也可能在[90,100]、[80,89]、
[70,79]、[60,69]、[0,59]的其中一段之内,可以用复杂分支的 If 结构来处理。
m=input("Enter mark:")
m=float(m)
if m<0 or m>100:
print("Invalid")
elif m>=90:
print("A")
elif m>=80:
print("B")
elif m>=70:
print("C")
elif m>=60:
print("D")
else:
print("E")
例 2-2-2:输入 0-6 的整数,把它作为星期,其中 0 对应星期日,1 对应星期一,……,
输出 Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday。
设输入的整数为 w,根据 w 的值可以用 switch 语句分为 8 个情形,程序如下:
w=input("w=")
w=int(w)
if w==0:
s="Sunday"
elif w==1:
s="Monday"
elif w==2:
s="Tuesday"
elif w==3:
s="Wednesday"
elif w==4:
s="Thursday"
elif w==5:
s="Friday"
elif w==6:
s="Sturday"
else:
s="Unknown"
print(s)
2.2.3 【案例】一元二次方程的解
1、案例描述
输入一元二次方程的系数 a、b、c,求它的根、
3、案例代码
c=input("c=")
a=float(a)
b=float(b)
c=float(c)
if a!=0:
d=b*b-4*a*c
if d>0:
d=math.sqrt(d)
x1=(-b+d)/2/a
x2 = (-b - d) / 2 / a
print("x1=",x1,"x2=",x2)
elif d==0:
print("x1,x2=", -b/2/a)
else:
print("无实数解")
else:
print("不是一元二次方程")
例如:
a=1
b=2
c=1
x1,x2= -1.0