【我的Python学习之旅】python程序流程控制 之 选择结构 (十一)

选择结构

选择结构可以根据条件来控制代码的执行分支,也叫分支结构。Python使用if 语句来实现分支机构。

分支结构的形式

分支结构包含单分支,双分支和多分支等形式。
【我的Python学习之旅】python程序流程控制 之 选择结构 (十一)_第1张图片

单分支结构

if语句单分支结构的语法形式如下:

if(条件表达式):

语句/语句块

其中:

(1)条件表达式:可以是关系表达式、逻辑表达式、算术表达式等。

(2)语句/语句块:可以是单个语句,也可以是多个语句。多个语句的缩进必须一 致。

当条件表达式的值为真(True)时,执行if后的语句(块),否则不做任何操作,控制将转到if语句的结束点。条件表达式最后被评价为bool值True(真)或False(假)。

如果表达式的结果为数值类型(0)、空字符申(" ")、空元组(())、空列表([])、空字典({}).其bool值为False(假),否则其bool值为True(真)。

例如,123、 “abe”、(1,2)均为True.


# [例3.2]单分 支结构示例:输人两个数a和b,比较两者的大小,使得a大于b.
a = int(input("请输人第1个整数:"))
b = int(input("请输人第2个整数:"))
print(str. format("输入值:{0},{1}",a,b))
if (a<b):            #a和b交换
    t = a
    a = b
    b = t
print(str.format("降序值:{0},{1}",a,b))

----------------------打印结果-----------------------
请输人第1个整数:1
请输人第2个整数:2
输入值:1,2
降序值:2,1

双分支结构

语句双分支结构的语法形式如下。

if (条件表达式):

语句/语句块1

else:

语句/语句块2

当条件表达式的值为真(Tue)时执行i后的语句(块)1,否则执行else后的语句(块)2。

Python提供了下列条件表达式来实现等价于其他语言的三元条件运算符((条件)?语句1:语句2)的功能:

条件为真时的值if (条件表达式) else条件为假时的值

例如,如果x≥0,则y=x,否则y=0,可以表述为:

y=x if (x>=0) else 0



#计算分段函数

import math
x= int(input("输入x的值"))
#(1)利用单分支结构实现
if (x>=0):
   y = math.sin(x) + 2 * math.sqrt(x + math.exp(4)) - math.pow(x + 1, 3)
if (x<0):
   y = math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e
print(y)
#(2)利用双分支结构实现
if (x>=0):
   y = math.sin(x) + 2 * math.sqrt(x + math.exp(4)) - math.pow(x + 1, 3)
else:
   y = math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e
print(y)
#(3)利用条件运算语句实现
y = (math.sin(x) + 2 * math.sqrt(x + math.exp(4)) - math.pow(x + 1, 3)) if ((x>=0)) else \
   (math.log(-5 * x) - math.fabs(x * x - 8 * x) / (7 * x) + math.e)
print(y)

​----------------------打印结果-----------------------
x===5
-201.5189566538235
-201.5189566538235
-201.5189566538235

多分支结构

if语句多分支结构的语法形式如下。

该语句的作用是 根据不同条件表达式的值确定执行哪个语句(块)。

if (条件表达式1) :

语句/语句块1
elif (条件表达式2) :
语句/语句块2
elif (条件表达式n) :
语句/语句块n
[else:
语句/语句块n+ 1;]

[例3.4] 已知某课程的百分制分数mark将其转换为五级制(优、良、中、及格、不及格)的评定等级grade。评定条件如下:

优 – mark≥90

良 – 80≤mark< 90

中 – 70≤mark< 80

及格 — 60≤mark 70

不及格 – mark<60

根据评定条件,有以下3种方法实现。


#方法一:
mark = int(input("请输入分数:"))
if (mark >= 90): grade = "优"
elif (mark >= 80): grade = "良"
elif (mark >= 70): grade = "中"
elif (mark >= 60): grade = "及格"
else: grade = "不及格"
print(grade)
#方法二:
if (mark >= 90): grade = "优"
elif (mark >= 80 and mark < 90): grade = "良"
elif (mark >= 70 and mark < 80): grade = "中"
elif (mark >= 60 and mark < 70): grade = "及格"
else: grade = "不及格"
print(grade)
#方法三:
if (mark >= 60): grade = "及格"
elif (mark >= 70): grade = "中"
elif (mark >= 80): grade = "良"
elif (mark >= 90): grade = "优"
else: grade = "不及格"
print(grade)

----------------------打印结果-----------------------
请输入分数:55
不及格
不及格
不及格

其中,方法-使用关系运算符“>=”,按分数从大到小依次比较;方法二使用关系运算符和辑运算符表达完整的条件,即使语句顺序不按比较的分数从大到小依次书写,也可以得到正的等级评定结果;方法三使用关系运算符“> =”,但按分数从小到大依次比较。

在上述3种方法中,方法一、方法二正确,而且方法一简洁明了,方法二虽然正确,但是在冗余条件。方法三虽然语法没有错误,但是判断结果错误:根据mark分数所得等级评定果只有“及格”和“不及格"两种,根据程序流程自行分析原因。

[例3.5]已知坐 标点(x,y),判断其所在的象限。


x = int(input("请输入x坐标:"))
y = int(input("请输入y坐标:"))
if (x == 0 and y == 0): print("位于原点")
elif (x == 0): print("位于y轴")
elif (y == 0): print("位于x轴")
elif (x > 0 and y > 0): print("位于第一象限")
elif (x < 0 and y > 0): print("位于第二象限")
elif (x < 0 and y < 0): print("位于第三象限")
else: print("位于第四象限")

----------------------打印结果-----------------------
请输入x坐标:5
请输入y坐标:-9
位于第四象限

if 语句的嵌套

在f语句中又包含一个或多个if语句称为if语句的嵌套。

[例3.6]计算 分段函数: x>0时 y = 1, x=0 时y = 0 ,x <0 时 y = -1.

此分段函数有以下几种实现方式,判断哪些是正确的,并自行编程测试正确的实现方式。


x=int(input("输入x的值=="))
#方法一(多分支结构):
if (x > 0): y = 1
elif (x == 0): y = 0
else: y = -1
print(y)
#方法二(if语句嵌套结构):
if (x >= 0):
    if (x > 0): y = 1
    else: y = 0
else: y = -1
print(y)
#方法三:
y = 1
if (x != 0):
    if (x < 0): y = -1
else: y = 0
print(y)
#方法四:
y = 1
if (x != 0):
    if (x < 0): y = -1
    else: y = 0
print(y)

----------------------打印结果-----------------------
输入x的值==10
1
1
1
0

选择结构综合举例

【例3.7】 输入三个数从小到大顺序排列

a = int(input("请输入整数a:"))
b = int(input("请输入整数b:"))
c = int(input("请输入整数c:"))
if (a < b): t = a; a = b; b = t   #使得a>b
if (a < c): t = a; a = c; c = t   #使得a>c
if (b < c): t = b; b = c; c = t   #使得b>c
print("排序结果(降序):", a, b, c)

----------------------打印结果-----------------------
请输入整数a:5
请输入整数b:5
请输入整数c:5
排序结果(降序): 5 5 5

【3.8】判断某一年是否为闰年,判断条件能被4 整除不能被100 整除。

import calendar
y=int(input("请输入年份:"))#方法一。使用一个逻辑表达式包含所有的闰年条件
if ((y % 4 == 0 and y % 100 != 0) or y % 400 == 0):
    print("是闰年")
else: print("不是闰年")
    
    
#方法二。使用嵌套的if语句,相关语句如下:
if (y % 400 == 0): print("是闰年")
else:
    if (y % 4 == 0):
        if (y % 100 == 0): print("不是闰年")
        else: print("是闰年")
    else: print("不是闰年")
        
        
#方法三。使用if-elif语句,相关语句如下:
if (y % 400 == 0): print("是闰年")
elif (y % 4 != 0): print("不是闰年")
elif (y % 100 == 0): print("不是闰年")
else: print("是闰年")
    
    
#方法四。使用calendar模块的isleap函数来判断闰年,相关语句如下:
if (calendar.isleap(y)): print("是闰年")
else: print("不是闰年")

----------------------打印结果-----------------------
请输入年份:2021
不是闰年
不是闰年
不是闰年
不是闰年

你可能感兴趣的:(python笔记)