欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础Python完全自学教程》今天给大家分享的是第11课《Python中的选择语句》。本节课主要内容有:最简单的if语句、if...else语句、if...elif...else语句、选择语句的嵌套。

选择语句,也称为条件语句。即按照条件执行不同的代码片段。

在Python中,选择语句主要有3种形式,分别是if语句、if...else语句、if...elif...else多分支语句。

11.1、Python中最简单的if语句

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

if 表达式;语句块

其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如,a>b and a!=c),如果表达式为真,就执行语句块;如果表达式的值为假,就跳过语句块,继续执行后面的语句。这种形式的if语句相对于汉语里面的“如果……就……”。其执行流程图如下:

图11.1 最简单的if语句执行流程图

实例11.1、《射雕英雄传》中,黄蓉与瑛姑见面的一道数学题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?

在这里使用if语句判断用户输入的是不是黄蓉所说的“除以三余二,除以五余三,除以七余二”的数,代码如下:

print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?")
num = int(input("请输入你认为符合条件的数字:"))
if (num % 3 == 2) and (num % 5 == 3) and (num % 7 == 2):print(num,"符合三三数之剩二,五五数之剩三,七七数之剩二")

运行程序,当输入23时,执行结果如下:

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?
请输入你认为符合条件的数字:23
23 符合三三数之剩二,五五数之剩三,七七数之剩二
>>>

当输入的值,符合条件时,输出结果。

运行程序,当输入25时,执行结果如下:

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?
请输入你认为符合条件的数字:25
>>>

当输入的值,不符合条件时,不会输出结果。

站长在线误区提示:

1、使用if语句的时候,后面没有加英文冒号:

# if语句未加英文冒号
number = 5
if number == 5print("number的值为5")

正确的写法如下:

# if语句结尾处加英文冒号
number = 5
if number == 5:print("number的值为5")

2、语句位置需要做正确的缩进。

#正确的缩进
height = float(input("请输入您的身高(单位为米):"))      # 输入身高,单位:米,如:1.70
weight = float(input("请输入您的体重(单位为千克):"))     # 输入体重,单位:千克,如:65
bmi=weight/(height*height)      # 用于计算BMI指数,公式为“体重/身高的平方”if bmi < 18.5:print("您的BMI指数为:"+str(bmi))  # 输出BMI指数print("您的体重过轻 ~@_@~")

上面是正确的缩进,比如输入身高:1.60,体重35结果如下:

请输入您的身高(单位为米):1.60
请输入您的体重(单位为千克):35
您的BMI指数为:13.671874999999998
您的体重过轻 ~@_@~
>>>

下面我来一个错误的缩进,代码如下:

# 错误的缩进
height = float(input("请输入您的身高(单位为米):"))      # 输入身高,单位:米,如:1.70
weight = float(input("请输入您的体重(单位为千克):"))     # 输入体重,单位:千克,如:65
bmi=weight/(height*height)      # 用于计算BMI指数,公式为“体重/身高的平方”if bmi < 18.5:print("您的BMI指数为:"+str(bmi))  # 输出BMI指数
print("您的体重过轻 ~@_@~")

输入身高:1.60,体重35,执行结果如下:

请输入您的身高(单位为米):1.60
请输入您的体重(单位为千克):35
您的BMI指数为:13.671874999999998
您的体重过轻 ~@_@~
>>>

看起来可以执行,没有什么问题,我改成 身高1.60,体重70,执行结果如下:

请输入您的身高(单位为米):1.60
请输入您的体重(单位为千克):70
您的体重过轻 ~@_@~
>>>

不管bmi的值是否小于18.5都会输出“您的体重过轻 ~@_@~”。这显然是错误的,与本意不符合,但是程序不会报错,因此这个bug要特别注意。

11.2、Python中的if...else语句

在Python中,如果遇到只能二选一的条件,那么久使用if...else语句来解决问题。起语法格式如下:

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

使用if...else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式。

如果满足条件,则执行if后的语句块;否则,执行else后面的语句块。

这样的形式的选择语句相对于汉语里面的“如果......否则......”。其执行流程如图11.2所示:

图11.2 if...else语句执行流程图

现在我们通过一个实例来讲解if...else的使用。

例11.2、判断输入的是不是黄蓉所说的数。

使用if...else语句判断用户输入的数字是不是黄蓉所说的“除以三余二,除以五余三,除以七余二”的数,代码如下:

print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?")
num = int(input("请输入你认为符合条件的数字:"))
if (num % 3 == 2) and (num % 5 == 3) and (num % 7 == 2):print(num,"符合三三数之剩二,五五数之剩三,七七数之剩二")
else:print(num,"不符合!")

当输入23时,就是符合条件的数字,结果如下:

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?
请输入你认为符合条件的数字:23
23 符合三三数之剩二,五五数之剩三,七七数之剩二
>>>

当输入25时,就是不符合条件的数字,结果如下:

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?
请输入你认为符合条件的数字:25
25 不符合!
>>>

站长在线误区提示:

1、else不可以单独使用,必须和if一起使用。

2、在程序中使用if...else语句时,如果出现if语句多于else时,那么改else语句就会根据缩进确定该else是属于哪一个if语句的。如:

#错误的缩进代码示范
a = -1
if a >= 0:if a > 0:print("a大于零")else:print("a等于零")

上述代码不会输出任何信息,因为else语句属于第3行的if语句,所以当a小于零时,else语句将不执行。而修改为:

#正确的缩进代码示范
a = -1
if a >= 0:if a > 0:print("a大于零")
else:print("a小于零")

这样的话,就会有输出结果:a小于零

11.3、Python中的if...elif...else多分支语句。

在Python开发程序的时候,出现多选一的时候就使用if...elif...else多分支语句。通常表现为“如果满足某种条件,则进行某种处理,否则,满足另一种条件,则执行另一种处理。”

if...elif...else多分支语句语法格式如下:

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

使用if...elif...else多分支语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式。

如果表达式为真,则执行语句;如果表达式为假,则跳过该语句,进行下一个elif判断;只有在所有表达式都为假的情况下,才会执行else中的语句。if...elif...else多分支语句执行流程如图11.3所示:

图11.3 if...elif...else多分支语句执行流程图

注意:if和elif都需要判断表达式的真假,而else则不需要判断;另外elif和else都必须跟if一起使用,不能单独使用。

实例11.3、通过输入分数,输出对应的等级(优秀、良好、中等、及格、不及格)代码如下:

fenshu = float(input("请输入分数:")) #输入数据,且转换成浮点数
if fenshu > 100 or fenshu < 0:print("分数输入不合理。")
elif fenshu >= 90:print("优秀")
elif fenshu >= 80:print("良好")
elif fenshu >= 70:print("中等")
elif fenshu >= 60:print("及格")
else:print("不及格")

站长在线特别提醒:大多数教程使用的是int()函数,转换成整型数据,其实是不对的,比如输入66.5就会报错了。只有转换成浮点数(float)才能正确处理,而不会报错。

程序执行情况及输出结果:

请输入分数:66.5
及格
>>>

11.4、Python中选择语句的嵌套

在本节课中,我们讲到了if语句、if...else语句、if...elif...else多分支语句,这3种形式的选择语句之间是可以相互嵌套的。

11.4.1、例如:在最简单的if语句中嵌套if...else语句,语法如下:

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

11.4.2、例如:在if...else语句中嵌套if...else语句,语法如下:

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

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

实例11.4、使用嵌套语句判断输入的年份是不是闰年。代码如下:

year = int(input("请输入一个年份:"))   # 获取用户输入的年份,并转换为整型
if year % 4 == 0:                       # 四年一闰if year % 100 == 0:if year % 400 == 0:             # 四百年再闰print(year,"年是闰年")else:                           # 百年不闰print(year,"年不是闰年")else:print(year,"年是闰年")
else:print(year,"年不是闰年")

说明:

判断一个年份是否为闰年的条件是,可以可以被4整除,但 不能被100整除,或者可以被400整除。

1582年以来的置闰规则:

普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。

运行上面程序,输入一个闰年的年份,如2020,得到的结果如下:

请输入一个年份:2020
2020 年是闰年
>>>

重新运行上面程序,输入一个不是闰年的年份,如2021,得到的结果如下:

请输入一个年份:2021
2021 年不是闰年
>>>

好了本节课讲到了最简单的if语句、if...else语句、if...elif...else语句、选择语句的嵌套。今天的课程不是看的,而是靠大家亲自运行的,多写多练才有进步。今天的课程不好出选择题了。大家自己练习起来。

下节预告:零基础Python完全自学教程12:Python中的循环语句

相关阅读:

《零基础Python完全自学教程》汇总

1、认识python

2、安装python及写第一个Python程序

3、Python开发工具介绍

4、Python语法特点

5、Python中的变量

6、Python中的基本数据类型

7、Python中的基本输入和输出

8、Python中常用的运算符

9、Python中运算符的优先级和条件表达式

10、Python中的三大程序结构

零基础Python完全自学教程11:Python中的选择语句相关推荐

  1. 基于Proteus无实物零基础STM32入门自学教程(七)--定时器点亮LED

    简介:本项目为基于STM32F103R6为核心定时器点亮LED工程.在第一个任务里我们点亮LED是使用延时点亮.从这一讲我们开始学习真正的定时器使用方法,而这种方法是最接近实际应用的.实际应用中几乎不 ...

  2. 站长在线零基础Python完全自学教程20:在Python中使用正则表达式完全解读

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础 Python完全自学教程>今天给大家分享的是第20课< 在Python中使用正则表达式完全解读>.本节课是一个大课,我分 ...

  3. 零基础Python完全自学教程15:Python中的列表

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础 Python完全自学教程>今天给大家分享的是第14课< Python中的列表 >.本节课是一个大课,我分了这些知识点进行 ...

  4. 站长在线零基础Python完全自学教程18:Python中的集合完全解读

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础 Python完全自学教程>今天给大家分享的是第18课< Python中的集合完全解读>.本节课是一个大课,我分了这些知识 ...

  5. 零基础Python完全自学教程17:Python中的字典完全解读

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础 Python完全自学教程>今天给大家分享的是第17课< Python中的字典完全解读>.本节课是一个大课,我分了这些知识 ...

  6. 零基础Python完全自学教程3:Python开发工具介绍

    欢迎你来到站长在线的站长学堂学习Python课程.今天<零基础Python完全自学教程>分享的主题是<Python开发工具介绍>. 作为一个Python程序员需要对一些常用的P ...

  7. python海龟教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环...

    条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...

  8. 零基础如何系统地自学Python编程?这是我看到过回答最好的文章

    零基础如何系统地自学Python编程?最近柏汌的一个粉丝私信我这么问道,我思考了一下谨慎的回答了他,但是感觉很多东西还是没说明白,相信其他朋友也会有这样的困惑,所以今天就好好的跟大家聊一下这个问题. ...

  9. python语言自学教程-3D图示Python标准自学教程入门篇

    内容简介: Python入门篇教程从最基础的计算机发展史.Python的来源与发展历史开始讲起: 依次讲解python变量与表达式.数据类型.运算符.流程控制语句等,末尾通过课堂练习.课后作业以及微型 ...

最新文章

  1. fastjson又被发现漏洞,这次危害可导致服务瘫痪!
  2. VS2012/13本地发布网站详细步骤(可带数据库)
  3. UrlPager免费分页控件2.0版发布!
  4. Vue为v-html中标签添加CSS样式
  5. Matlab读取文本数据
  6. C++11 中STL库中新增内容
  7. Vimium插件让键盘党像操作Vim一样操作Chrome
  8. layui列表筛选列_Shopify搜索产品并筛选产品列表功能介绍
  9. 部署gogs_可以更快地查阅 Gogs 文档了!
  10. oracle如何创建视图
  11. 6月6号=》80页-100页
  12. B树和B+树详细解析
  13. ASP.NET MVC 解析模板生成静态页一(RazorEngine)
  14. win11电脑上如何设置微信双开(打开两个微信)
  15. kubernetes更换IP地址重新初始化master节点
  16. 摸鱼神器 Thief-Book
  17. Docker部署微服务应用笔记(三)
  18. 麦克风MIC 工作原理以及灵敏度调整
  19. STM32使用库函数点灯实验
  20. SpringBoot Banner 图案

热门文章

  1. mysql raiserror_sql server数据库中raiserror函数用法的详细介绍
  2. 排列组合 n个球放入m个盒子算法 总结
  3. python操作word文档-python操作word
  4. java getrealpath_JSP中 request.getRealPath(/xx/yy) 方法提示已经过时的替代方法
  5. 谈一个普通211计算机研究生学渣的Java后端开发的面试之路
  6. Web前端开发技术实验与实践(第3版)储久良编著实训9
  7. ClickHouse 聚合函数
  8. 校园云盘硬件搭建,及建设之超融合技术
  9. java图形用户登录界面_java图形化界面实现登录窗口
  10. 图片工具类-Thumbnails