3.1.2 通过字符串方法+逻辑运算符做判断
当使用 input()函数让用户输入内容时,你无法保证用户输入的内容合乎规范。比如你给用户 6 个选项,每个选项分别对应一个动态路由协议的名称(选项 1: RIP;选项 2:IGRP;选项 3: EIGRP;选项 4: OSPF;选项 5: ISIS;选项 6: BGP),提示用户输入路由协议的选项号码来查询该路由协议的类型,然后让 Python 根据用户输入的选项号码告诉用户该路由协议属于链路状态路由协议、距离矢量路由协议,还是路径适量路由协议。
这里你无法保证用户输入的肯定是整数,即使用户输入的是整数,也无法保证输入的是 1~ 6 的数字。因为 input()函数的返回值是字符串,所以可以首先使用字符串的 isdigit()函数来判断用户输入的内容是否为整数,这是判断条件之一。然后通过 int()将该字符串数字转换成整数,继续判断该整数是否介于 1 和 6 之间(包含 1 和 6),这是判断条件之二。
再将这两个判断条件通过逻辑运算符 and 来判断它俩是否同时成立。如果成立,则返回相
应的答案;如果不成立,则提示用户输入的内容不符合规范并终止程序。代码如下。
[root@CentOS-Python ~]# cat lab.py
# coding=utf-8
print ('''请根据对应的号码选择一个路由协议:
1. RIP
2. IGRP
3. EIGRP
4. OSPF
5. ISIS
6. BGP ''')
option = input('请输入你的选项(数字 1-6): ')
if option.isdigit() and 1 <= int(option) <= 6:
if option == '1' or option == '2' or option == '3':
print ('该路由协议属于距离矢量路由协议。 ')
elif option == '4' or option == '5':
print ('该路由协议属于链路状态路由协议。 ')
else:
print ('该路由协议属于路径矢量路由协议。 ')
else:
print ('选项无效,程序终止。 ')
这里我们用到了嵌套 if 语句。在某一个条件成立(判定为 True)后,如果还需要检查其他子条件,就可以用嵌套 if 语句来完成。在嵌套 if 语句中,一组 if、 elif 和 else 可以构造在另一组 if、 elif 和 else 中,不过需要注意缩进。
运行代码,测试效果如下。