11 选择结构

文章目录

  • 1、程序结构
  • 2、`if`语句
  • 3、`if-else`语句
  • 4、`if…elif…else`语句——多重if选择结构
  • 5、嵌套选择结构
  • 6、条件表达式
    • 7、练一练
    • 升序排序

1、程序结构

Python程序设计中的3种基本结构为顺序结构、选择结构和循环结构。
11 选择结构_第1张图片
生活中的判断场景
11 选择结构_第2张图片
11 选择结构_第3张图片
11 选择结构_第4张图片
程序中的判断场景
11 选择结构_第5张图片

2、if语句

Python中使用if保留字来组成选择语句,简单的语法格式如下:

if 表达式:
	语句块

在这里插入图片描述
练一练:

  • 从键盘获取自己的年龄,判断是否大于或者等于18岁,如果满足就输出“已成年,网吧可以去了”。
  • 张三Python成绩大于98分,而且html成绩大于95分,老师奖励他;或者Python成绩等于100分,PS成绩大于85分,老师也可以奖励他。
  • 编写程序,从键盘获取用户名和密码,然后判断(假设正确用户名是admin,密码是123456),如果正确就输出以下信息:“亲爱的xxx,欢迎登陆 XXXX系统。”

注意:在Python中,

真:非0数字、非空字符串
假:空字符串、None、0、[]、{}
11 选择结构_第6张图片

3、if-else语句

Python中提供了if-else语句解决类似问题,其语法格式如下:

if 表达式:
	语句块1
else:
    语句块2

11 选择结构_第7张图片

ticket = 1 # 用1代表有车票,0代表没有车票
if ticket == 1:
    print("有车票,可以上火车")
    print("终于可以见到Ta了,美滋滋~~~")
else:
    print("没有车票,不能上车")
    print("亲爱的,那就下次见了,一票难求啊~~~~(>_<)~~~~")

11 选择结构_第8张图片
练一练:

  • 从键盘输入刀子的长度,如果刀子长度没有超过10cm,则允许上火车,否则不允许上火车。
  • 用户输入两个数ab。如果a能被b整除或ab大于1000,则输出a;否则输出b

4、if…elif…else语句——多重if选择结构

对学生的期末考试成绩评测

  • 成绩>=90 :优秀
  • 成绩>=80 :良好
  • 成绩>=70 :中等
  • 成绩>=60 :及格
  • 成绩<60 :不及格
    分析:将成绩分成几个连续区间判断。
    11 选择结构_第9张图片
    解决一:使用5if解决。
    11 选择结构_第10张图片
    使用单个if选择结构无法完成。
    使用多个if选择结构可以实现,但要写很多个,而且条件写起来比较复杂。

解决二:使用多重if选择结构。

在开发程序时,如果遇到多选一的情况,则可以使用if…elif…else语句,该语句是一个多分支选择语句,通常表现为“如果满足某种条件,就会进行某种处理,否则,如果满足另一种条件,则执行另一种处理if…elif…else语句的语法格式如下 :

if 表达式1:
	语句块1
elif 表达式2:
	语句块2
…
else:
	语句块n

11 选择结构_第11张图片
11 选择结构_第12张图片

print("在古希腊神话中,玫瑰花集爱情与美丽于一身,所以人们常用玫瑰来表达爱情。\n")
print("但是你知道吗?不同朵数的玫瑰花代表的含义是不同的。\n")
#获取用户输入的朵数,并转换为整型
number = int(input("输入你想送几朵玫瑰花,小泸会告诉您含义:"))
if number == 1:           #如果输入的是1,代表1朵
	print("1朵:一见钟情!") 
elif number == 2:         #输入2
	print("2朵:这世界只有我俩!")
elif number == 4:         #输入2
	print("4朵:至死不渝!")
elif number == 10:        #输入2
	print("10朵:十全十美!")
elif number == 99:        #输入2
	print("99朵:天长地久!")
elif number == 100:       #输入2
	print("100朵:百分之百的爱!")
elif number == 108:       #输入2
	print("108朵:求婚!")
else:                     #输入其它数字 
	print("无论送她多少朵,都代表你满满的爱意!")

想一想:
问:多重if选择结构中各个条件(即elif块)的顺序可以任意排列吗?
答:在多重if选择结构,如果条件之间存在连续关系,则elif块的顺序不是乱排的,要么从大到小,要么从小到大,总之是有序的排列。如果多重if选择结构中的所有条件之间只是简单的互斥,不存在连续关系,则条件没有顺序要求。

练一练

(1)计算身体质量指数
身体质量指数 (Body Mass Index, 简称BMI), 是关于体重指标的质量测量,将以千克为单位的体重除以以米为单位身高的平方,就得到BMI的值。针对16岁及以上年龄的人群,他们的BMI值说明如下表所示:
11 选择结构_第13张图片
(2)猜拳游戏
从键盘录入人的出拳,计算机随机出拳,实现人和计算机的一次猜拳。
[0,2]的随机整数产生如下:

import random
print(random.randint(0,2))

5、嵌套选择结构

11 选择结构_第14张图片

前面3种形式的选择语句之间都可以互相嵌套。
在最简单的if语句中嵌套if…else语句,形式如下:

if 表达式1:
	if 表达式2:
		语句块1
	else:
		语句块2

if…else语句中嵌套if…else语句,形式如下:

if 表达式1:
	if 表达式2:
		语句块1
	else:
		语句块2
else:
	if 表达式3:
		语句块3
    else:
		语句块4

if选择语句可以有多种嵌套方式,开发程序时,可以根据自身需要选择合适的嵌套方式,但一定要严格控制好不同级别代码块的缩进量。

示例:
国家质量监督检验检疫局发布的《车辆驾驶人员血液、呼气酒精含量阈值与检验》中规定:车辆驾驶人员血液中的酒精含量小20mg/100ml不构成饮酒驾驶行为;酒精含量大等于20mg/100ml、小于80mg/100ml为饮酒驾车;酒精含量大于或等于80mg/100ml为醉酒驾车。现编写一段Python代码来帮助泸州交警判断司机是否存在酒后驾车。

print("\n 中国酒城·醉美泸州 四川省泸州市欢迎您! \n")
print("美酒虽好,请不要贪杯哦!为了您和他人的安全,严禁酒后驾车!\n")
#获取驾驶员输入的酒精含量,并转换为整型
proof = int(input("请输入驾驶员每100ml血液的酒精含量:"))
if proof < 20:    #酒精含量小于20mg,不构成饮酒行为
	print("\n您还不构成饮酒行为,可以开车,但要注意安全!")
else:    #酒精含量大于或等于20mg,已经构成饮酒驾车行为
	if 80 > proof >= 20: #酒精含量大于或等于20mg且小于80mg,达到饮酒驾驶标准
		print("\n已经达到酒后驾车标准,请不要开车!")
	else:   #酒精含量大于或等于80mg,已经达到醉酒驾驶标准
		print("\n已经达到醉酒驾车标准,千万不要开车!")
chePiao = 1     # 用1代表有车票,0代表没有车票
daoLenght = 9     # 刀子的长度,单位为cm

if chePiao == 1:
    print("有车票,可以进站")
    if daoLenght < 10:
        print("通过安检")
        print("终于可以见到Ta了,美滋滋~~~")
    else:
        print("没有通过安检")
        print("刀子的长度超过规定,等待警察处理...")
else:
    print("没有车票,不能进站")
    print("亲爱的,那就下次见了,一票难求啊~~~~(>_<)~~~~")

练一练

  • 学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组。
  • 情节描述:上公交车,并且可以有座位坐下。要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果空座位的数量大于0,就可以坐下。

6、条件表达式

在程序开发时,经常会根据表达式的结果,有条件地进行赋值。例如,要返回两个数中较大的数,可以使用下面的if语句:

a = 10
b = 6
if a > b:
    r = a
else:
    r = b

针对上面的代码,可以使用条件表达式进行简化,代码如下:

a = 10
b = 6
r = a if a > b else b

练一练
从键盘输入3个整数,输出3个整数中的最大值。

7、练一练

升序排序

从键盘输入3个整数,分别赋给整数变量abc,然后将输入的整数按照从小到大的顺序放在变量abc中,并输出三个变量的值。

你可能感兴趣的:(Python学习园地,python)