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

    时间: 浏览:556次  来源:站长在线
欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础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
码字不易,打个赏呗
站长在线小编感谢你的支持!

猜你喜欢

站长在线Python教程:Python中类定义详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中类定义详解》。

2022-02-23  分类:Python学堂  浏览:191次


站长在线Python教程:python中面向对象相关概述详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《python中面向对象相关概述详解》。本文的主要内容有:面向对象是什么、面向对象中的对象是什么、Python中的类是什么、面向对象编程的特点有哪些?

2022-02-14  分类:Python学堂  浏览:158次


站长在线零基础Python完全自学教程23:函数的返回值、作用域和匿名函数

导读:欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第23课《函数的返回值、作用域和匿名函数》。本文是一个大课程分成了下面4节小课程:Python中函数的返回值、Python函数中的局部变量、Python函数中的全局变量、Python函数中的匿名函数等内容。

2022-02-09  分类:Python学堂  浏览:181次


站长在线Python教程:Python函数中的匿名函数详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python函数中的匿名函数详解》。本文的主要内容有:匿名函数的定义、匿名函数的表达式、匿名函数的注意点、匿名函数的优点、匿名函数的应用举例。

2022-02-01  分类:Python学堂  浏览:205次


站长在线Python教程精讲:在Python函数中的全局变量详解

欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中的全局变量详解》。本文的主要内容有:什么是全局变量、在函数外部定义的变量是全局变量、在函数内部定义中添加global关键词后变成全局变量。

2022-01-10  分类:Python学堂  浏览:331次


站长在线Python教程精讲:在Python函数中的局部变量详解

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《在Python函数中的局部变量详解》。本文的主要内容有:变量的作用域的概念、局部变量的概念、局部变量的举例。

2022-01-06  分类:Python学堂  浏览:276次


Python常用英语及用法

站长在线站长,准备系统的学习Python知识,但是对我来说,英语实在是太差了,当然我知道的是,不仅仅我,很多人在学习Python的时候,也是不知道这些英语单词的意思与用法的,在这里站长在线站长就把这些英语整理出来,把英语以及中文意思、用法一起贴出来,让大家一起来学习。

2022-01-02  分类:Python学堂  浏览:356次


站长在线Python精讲:Python中函数的返回值

导读:欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是《Python中函数的返回值》。本文的主要内容有:函数的返回值的含义、函数设置返回值的作用、return语句位置与多条 return语句的总结。

2021-12-29  分类:Python学堂  浏览:314次


站长在线零基础Python完全自学教程22:在Python中函数的参数传递

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第22课《在Python中函数的参数传递》。本文是一个大课程分成了下面5节小课程:在Python函数中理解形式参数和实际参数、在Python函数中参数传递的位置参数详解、在Python函数中的关键字参数详解、在Python函数中的默认参数详解、在Python函数中的可变参数详解。

2021-12-26  分类:Python学堂  浏览:307次


站长在线零基础Python完全自学教程21:Python中函数的创建和调用

欢迎你来到站长学堂,学习站长在线出品的在线课程《零基础 Python完全自学教程》今天给大家分享的是第21课《 Python中函数的创建和调用》。本文的主要内容有:在Python中函数的定义与创建、在Python中函数的调用详解。

2021-12-26  分类:Python学堂  浏览:320次