简单条件结构和多重条件结构,这两种条件结构可以解决很多条件判断问题。但还存在一种嵌套的判断情况,即只有当前提条件满足时,才判断后续条件是否满足。
生活中的嵌套条件
星期天去青岛玩,前提条件是如果星期日天气晴朗,且能买到去青岛的高铁票就去青岛玩,否则就在家休息。

在上面的图中,有两个条件:第一个条件是星期日天气晴朗;第二个条件是买到去青岛的高铁票。第一个条件是前提条件,这个条件必须满足,如果不满足这个条件,第二个条件就不用考虑了。因此第二个条件是嵌套在第一个条件内,第一个条件是外层条件,第二个条件是内层条件。

嵌套条件的语法
用Python语言来实现嵌套条件结构,就是在已有if或else语句中插入另一个if-else条件结构,实现条件的嵌套判断。

嵌套条件结构通过缩进来表示嵌套层次,内层条件结构的if和else语句要比外层的if和else语句缩进相等数量的空格(直接使用Tab键缩进也可以),内层条件结构的else语句也可以省略。
另外,外层else语句内的内层条件结构如无必要,可以省略。
嵌套条件案例程序

问题分析:
程序可以使用input函数获取用户输入的整数,因为input函数把用户所有的输入都转换为字符串,因此还需要使用int函数将字符串转换为整数,用户输入的整数可以分别赋值给变量a和b。

判断用户输入的两个整数是否相等,可以使用if-else条件结构来判断a和b是否相等,根据a和b是否相等,程序分成两种情况进行处理。

当a和b不相等时,属于不相等情况处理,这时就要判断出a和b的最大值。在这种情况下,需要在原有的if语句内,嵌套简单条件结构来判断a和b的大小。此时,原有的if语句称为外层if语句,用来判断a和b大小的if语句称为内层if语句,也可以说内层if语句是嵌套在外层if语句之内的。if语句理论上可以多层嵌套,但多层嵌套会导致代码过于复杂,代码结构也不清晰。因此嵌套条件结构一般以两层为主。

当a和b相等时,属于相等情况处理,这种情况程序处理比较简单,程序直接使用print函数输出a和b相等即可。

根据问题分析绘制流程图:

流程图有两个条件判断框,第一个判断框用于判断变量a和b是否相等,属于外层条件判断,第二个判断框在a等于b的条件下,判断出a和b的最大值,属于内层条件判断。
案例程序代码及解读
启动Python IDLE,在IDLE的Shell窗口新建一个代码文件,在新建的代码编辑窗口编写代码。

代码解读
在上面的代码中,首先使用input函数获取用户输入的两个整数,并分别赋值给变量a和b,此时a和b存储的内容类型为字符串,需要使用int函数将a和b存储的字符串转换为整数。
两个整数大小判断代码使用了嵌套条件结构。嵌套条件结构由外层if-else结构和内层if-else结构组成。外层if-else结构用于判断用户输入的两个整数是否相等:如果a和b不相等,使用内层if-else结构判断两个数值的大小,并输出较大的数;如果a和b相等,使用print函数输出两数相等。
代码编写完成,阿萌把代码保存到D盘的Python目录,保存的文件名称是max.py。

从输出结果可以看出:用户分别输入35和20两个整数时,程序输出两数中最大的数;用户输入19和19两个整数时,程序输出两个数相等。
内容小结
嵌套条件结构实际上就是在原有的if-else结构内嵌套使用if-else结构,原if-else结构的if语句或else语句都可以在语句内部嵌套使用if-else结构。
需要注意的是,嵌套条件结构理论上可以多层嵌套,但多层嵌套会导致代码过于复杂,代码结构也不清晰。因此嵌套条件结构一般以两层为主。
上机操作
编写一个程序,要求用嵌套条件结构实现。提示用户输入用户名,然后再提示输入登录密码。如果用户名是"admin"并且密码是“888888”,则提示用户登录成功,否则提示用户登录失败。
提示:程序模拟用户登录情况的处理,程序可以先创建两个变量用于存储程序预定义的用户名和登录密码。用户输入用户名和登录密码后,程序首先判断用户输入的用户名和程序预定义的用户名是否一致,如果用户输入的用户名正确,再判断用户输入的登录密码和程序预定义的密码是否一致。因此用户登录情况的处理,可以使用嵌套条件结构来实现。