7段代码带你玩转Python条件语句
以下文章来源于大数据 ,作者李明江 张良均 等
导读:条件语句通过一个或多个布尔表达式的执行结果(真值或假值)决定下一步的执行方向。所谓布尔表达式,即对某个对象进行布尔运算,产生一个bool值。条件语句的运行逻辑为:如果条件被满足(返回真值),可以做某件事情;如果条件不满足(返回假值),就做另一件事情,或什么也不做。
通过图1,可以对条件语句的运行机制作有一个简单的了解。虚线框内是一个选择结构,此结构中包含一个判断条件和两条执行语句,以及连接各部分的流向线。根据判断条件(布尔表达式)返回值的情况,程序将选择执行语句1或语句2。
if语句中包含3种条件判断句式,即if、elif和else。其中,if与elif部分都包含判断条件,当判断条件都不成立时,程序才能执行else部分的代码。
if语句最基础的形式是if-else,其基本语法格式如下。
操作语句1
else:
操作语句2
条件表达式:接收布尔表达式,表示判断条件是否成立。无默认值
操作语句:接收操作语句,表示执行一段代码。无默认值
代码清单① if-else语句实现登录界面
password = input ('请输入密码:')
if name == "Lucy" and password == "123456":
print ('****登录成功,欢迎!*****')
else:
print ('-----您的输入有误,登录失败!-----')
Out[1]: 请输入用户名:Lucy
请输入密码:123
-----您的输入有误,登录失败!-----
In[2]: name = input ('请输入用户名:')
password = input ('请输入密码:')
if name == "Lucy" and password == "123456":
print ('****登录成功,欢迎!*****')
else:
print ('-----您的输入有误,登录失败!-----')
Out[2]: 请输入用户名:Lucy
请输入密码:123456
****登录成功,欢迎!*****
在代码清单①中,使用input函数以支持交互式的输入,并在函数括号内插入文字进行了输入提示,增强了登录界面的人性化。在if部分的条件判断式中,使用and运算符进行且运算,只有账户和密码都输入正确才能成功登录,从而增加了安全性。
if-else语句可以缩减为单行形式,其基本语法格式如下。
代码清单② if-else语句的单行形式
print('num1加num2为百分数') if 1000 > num1 + num2 >100 else
print('num1加num2不为百分数')
Out[3]: num1加num2为百分数
操作语句1
elif 条件表达式2:
操作语句2
else:
操作语句3
代码清单③ 使用if-elif-else语句实现年龄段的判断
age = int(age)
if age < 18:
print('未成年人!')
elif age >= 18 and age <= 25:
print('青年人!')
elif age > 25 and age <= 60:
print('中年人!')
else:
print('老年人!')
Out[4]: 请输入您的年龄: 20
青年人!
代码清单④ 嵌套if-elif-else语句
age = int(age)
if age == 35:
nation = input('请输入你的国籍:')
if nation == '英国':
print('你是Tom! ')
elif (nation == '法国'):
print('你是Frank! ')
else:
print('你是Bob! ')
elif age == 21:
print('你是Jane,来自南非! ')
elif age == 51:
print('你是Washington,来自澳大利亚! ')
else:
print('请输入正确年龄值! ')
Out[5]: 请输入你的年龄:35
请输入你的国籍:法国
你是Frank!
条件判断语句应尽量简单,若语句复杂则应当将运算先放到一个变量中。
Python的条件语句中允许常用的数值比较运算(==,!=,>,>=,<,<=)。
Python允许无限次if语句嵌套,但实际编程中如果必须用到3级到4级嵌套,建议考虑用其他方法编写代码,嵌套超过两层会使程序的运行效率大打折扣。
BaseException:所有异常的基类
Exception:常规异常的基类
StandardError:所有的内建标准异常的基类
ArithmeticError:所有数值计算异常的基类
FloatingPointError:浮点计算异常
OverflowError:数值运算超出最大限制
ZeroDivisionError:除零
AssertionError:断言语句失败
AttributeError:对象不包含某个属性
EOFError:没有内建输入,到达EOF标记
EnvironmentError:操作系统异常的基类
IOError:输入/输出操作失败
OSError:操作系统异常
WindowsError:系统调用失败
ImportError:导入模块/对象失败
KeyboardInterrupt:用户中断执行
LookupError:无效数据查询的基类
IndexError:序列中没有此索引
KeyError:映射中没有这个键
MemoryError:内存溢出异常
NameError:未声明/初始化对象
UnboundLocalError:访问未初始化的本地变量
ReferenceError:弱引用试图访问已经垃圾回收了的对象
RuntimeError:一般的运行时异常
NotImplementedError:尚未实现的方法
SyntaxError:语法错误导致的异常
IndentationError:缩进错误导致的异常
TabError:Tab和空格混用
SystemError:一般的解释器系统异常
TypeError:对类型无效的操作
ValueError:传入无效的参数
UnicodeError:Unicode相关的异常
UnicodeDecodeError:Unicode解码时的异常
UnicodeEncodeError:Unicode编码错误导致的异常
UnicodeTranslateError:Unicode转换错误导致的异常
Warning:警告的基类
DeprecationWarning:关于被弃用的特征的警告
FutureWarning:关于构造将来语义会有改变的警告
UserWarning:用户代码生成的警告
PendingDeprecationWarning:关于特性将会被废弃的警告
RuntimeWarning:可疑的运行时行为(runtime behavior)的警告
SyntaxWarning:可疑语法的警告
ImportWarning:用于在导入模块过程中触发的警告
UnicodeWarning:与Unicode相关的警告
BytesWarning:与字节或字节码相关的警告
ResourceWarning:与资源使用相关的警告
操作语句1
except 错误类型1:
操作语句2
except 错误类型2:
操作语句3
else:
操作语句4
错误类型:接收Python异常名,表示符合该异常则执行下面语句。无默认值
操作语句:接收操作语句,表示执行一段代码。无默认值
代码清单⑤ try语句处理除零异常
# 以变量number作被除数,尝试运行除法操作
try:
print('1.0 / number =', 1.0 / number)
# 如果异常是除零异常,输出提示信息
except ZeroDivisionError:
print('***除数为0***')
Out[6]: ***除数为0***
代码清单⑥ Python异常层次差异
# 尝试索引赋值dict中不存在的值
try:
x = dict1['y']
except LookupError:
print('查询错误')
except KeyError:
print('键错误')
else:
print(x)
Out[7]: 查询错误
In[8]: # 调换LookupError和KeyError处理代码块的顺序
dict2={'a': 1, 'b': 2, 'v': 22}
# 尝试索引赋值dict中不存在的值
try:
x = dict2['y']
except KeyError:
print('键错误')
except LookupError:
print('查询错误')
else:
print(x)
Out[8]: 键错误
代码清单⑦ raise语句
try:
raise IndexError
except KeyError:
print ('in KeyError except')
except IndexError:
print('in IndexError except')
else:
print('no exception')
Out[9]: in IndexError except
◆
精彩推荐
◆
由易观携手CSDN联合主办的第三届易观算法大赛正在火热进行中!冠军奖3万元,每人最多邀请5位用户组队参赛。本次比赛主要预测访问平台的相关事件的PV,UV流量(包括Web端,移动端等),大赛将会提供相应事件的流量数据,以及对应时间段内的所有事件明细表和用户属性表等数据,进行模型训练,并用训练好的模型预测规定日期范围内的事件流量。
推荐阅读