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

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

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础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 == 5
    print("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:
        语句块1
    else:
        语句块2

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

if 表达式1:
    if 表达式2:
        语句块1
    else:
        语句块2
else:
    if 表达式3:
        语句块3
    else:
        语句块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中的三大程序结构


文末福利:

1、关注站长在线官方公众号站长在线微信号:olzzcom ,文末也有公众号二维码,关注公众号以后回复python,本站精心整理的Python书籍、软件、工具都实时更新哦!本站所安装的python3.10、 IDLE中文版 、PyCharmVisual Studio CodeSublime Text4等都在里面哦!

2、站长在线官方微信交流群已经开通了,微信扫码进入,一起交流,一起进步!

本文地址:https://www.olzz.com/pythonxzyj.html
码字不易,打个赏呗
站长在线小编感谢你的支持!
站长在线站长一对一技术培训,100元两个小时
阿里云虚拟主机1G空间,120元一年
香港、美国虚拟主机100元一年,1000元永久
腾讯云双十一0.4折起,2核8G5M三年仅700元,2核4G8M三年仅198元

猜你喜欢

站长在线Python精讲:Python中正则表达式的语法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中正则表达式的语法详解》。本知识点主要内容有9点:行定位符、元字符、限定符、字符集、排除字符、选择字符、转义字符、分组、在Python中使用正则表达式语法。

2021-12-07  分类:Python教程  浏览:12次


站长在线零基础Python完全自学教程19:python中字符串完全解读

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第19课《 python中字符串完全解读》。本节课是一个大课,我分了这些知识点进行详细讲解:字符串编码转换:encode编码和decode解码详解、使用“+”运算符来拼接字符串详解、使用len()函数计算字符串的长度详解、使用索引和切片的方法截取字符串详解、使用split()方法分割、使用join()方法合并字符串详解、检索字符串的5大方法详解、字符串中字母的大小写转换的4大方法详解、去除字符串中的空格和特殊字符的4个方法详解、格式化字符串的两种方法详解。

2021-12-05  分类:Python教程  浏览:32次


站长在线Python精讲:在Python中格式化字符串的两种方法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中格式化字符串的两种方法详解》。本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字符串。

2021-12-04  分类:Python教程  浏览:34次


站长在线Python精讲:在Python中去除字符串中的空格和特殊字符的4个方法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中去除字符串中的空格和特殊字符的4个方法详解》。本知识点主要内容有:使用strip()方法用于去掉字符串左、右两侧的空格和特殊字符、使用lstrip()方法用于去掉字符串左侧的空格和特殊字符、使用rstrip()方法用于去掉字符串右侧的空格和特殊字符、使用replace()方法,删除中间的空格和特殊字符。

2021-12-03  分类:Python教程  浏览:36次


站长在线经典Python题:使用Python编程思想解决鸡兔同笼的问题的4种方法

欢迎你来到站长在线的Python题库,鸡兔写完Python教程以后,还是来一个Python的题目吧!想来想去,还是写一个经典的题目为好,作为本栏目的第一个题目。我就想到了比较热门的题目《鸡兔同笼的问题》,本文不是用数学的方法,而是用Python编程的方法解决鸡兔同笼的问题。用的就是《Python中的三大程序结构》: 顺序结构、选择结构和循环结构。解决问题具体的方法就是;顺序语句假设法、选择语句判定法、while循环语句遍历法、for循环语句遍历法。下面我来一一解答:

2021-12-01  分类:Python题库  浏览:47次


站长在线Python精讲:在Python字符串中字母的大小写转换的4大方法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python字符串中字母的大小写转换的4大方法详解》。本知识点主要内容有:使用lower()方法,把所有大写字母转换成小写字母、使用upper()方法,把所有小写字母转换成大写字母、使用capitalize()方法,仅首字母转化为大写字母,其余小写字母、使用title()方法,把每个单词的首字母转化为大写字母,其余为小写字母。

2021-12-01  分类:Python教程  浏览:50次


站长在线Python精讲:在Python中检索字符串的5大方法详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中检索字符串的5大方法详解》。本知识点主要内容有:使用count()方法检索指定字符串在另一个字符串中出现的次数、使用find()方法检索是否包含指定的子字符串、使用index()方法检索是否包含指定的子字符串、使用startswith()方法用于检索字符串是否以指定子字符串开头和使用endswith()方法用于检索字符串是否以指定子字符串结尾。

2021-11-30  分类:Python教程  浏览:46次


站长在线Python精讲:在Python中使用split()方法分割、使用join()方法合并字符串详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用split()方法分割、使用join()方法合并字符串详解》。本知识点主要内容有:在Python中使用split()方法分割字符串和在Python中使用join()方法合并字符串。

2021-11-29  分类:Python教程  浏览:40次


站长在线Python精讲:在Python中使用索引和切片的方法截取字符串详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用索引和切片的方法截取字符串详解》。本知识点主要内容有:使用索引的方法截取一个字符串和使用切片的方法截取一段字符串。

2021-11-28  分类:Python教程  浏览:59次


站长在线python精讲:在Python中使用len()函数计算字符串的长度详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python中使用len()函数计算字符串的长度详解》。本知识点主要内容有:在Python中使用len()函数计算字符串在UTF-8编码中的长度和使用len()函数计算字符串在GBK编码中的长度。

2021-11-27  分类:Python教程  浏览:61次