Contents
2.1. 选择语句¶
2.1.1. 1.Python代码执行过程¶
Python代码在执行过程中,遵循下面的基本原则:
普通语句,直接执行;
碰到函数,将函数体载入内存,并不直接执行
碰到类,执行类内部的普通语句,但是类的方法只载入,不执行
碰到if、for等控制语句,按相应控制流程执行
碰到@,break,continue等,按规定语法执行
碰到函数、方法调用等,转而执行函数内部代码,执行完毕继续执行原有顺序代码
2.1.2. 2.条件判断¶
Python 中的比较操作符见下表。
相等 ==
不等于 !=
小于 <
不大于 <=
大于 >
不小于 >=
属于 in...
什么是真值( True ) 如果表达式的返回类型不是布尔会发生什么?什么情况下 Python 会认为是 True 和 False ? 一个成假赋值不一定明确表示为 False 。
其他内置类型的布尔值规则如下:
布尔值为假:False、None、0、False、[]、()、{}、set()、frozenset(),等等。·
布尔值为真:True 、非0的数值、True,非空的序列、元组、字典,用户定义的类和实例,等等。
简单的if语句
if 表达式:(布尔值)
语句块
if 表达式:
语句块1
else:
语句块2
if 表达式:
语句块1
elif 表达式:
语句块2
else:
语句块3
#推荐写法
if flag:
pass
if not flag:
pass
if a == 1:
pass
##不推荐
if x == True:
# ....
if len(items) != 0:
# ...
if items != []:
# ...
##推荐
if x:
# ....
if items:
# ...
eg
str = ''
if str:
print("str不是空字符串")
else:
print("str是空字符串")
list = []
if list:
print("list 不是空列表")
else:
print("list 是空列表")
dict2 = {}
if dict2:
print("dict2 不是空字典")
else:
print("dict2 是空字典")
2.1 演示一个if语句¶
import sys
param = None
if len(sys.argv) > 0:
param = int(sys.argv[1])
if param is None:
print("Alert")
print("The param is not set")
elif param < -10:
print("The param is samll")
elif param > 10:
print("The param is big")
else:
print("The param is middle")
2.2 python中的case语言¶
python没有switch或case语句用于测试多个值,要处理多个值,可以使用elif语句,如下
suffix = "hujianli.py"
suffix = "." + suffix.split(".")[1]
if suffix == ".htm":
content = "text/html"
elif suffix == ".py":
content = "python"
elif suffix == ".sh":
content = "shell"
elif suffix == ".png" or suffix == ".jpg":
content = "image/png"
else:
raise RuntimeError("Unknow content type.")
print(content)
输出
python
表示真值,可以用True和False
has_y = False
suffix = "hujianli.py"
suffix = "." + suffix.split(".")[1]
if suffix == ".htm":
has_y = True
elif suffix == ".py":
has_y = True
elif suffix == ".sh":
has_y = True
elif suffix == ".png" or suffix == ".jpg":
has_y = True
else:
raise RuntimeError("Unknow content type.")
print(has_y)
输出
True
########################if 的嵌套方式########################
if 表达式1:
if 表达式2:
语句块2
else:
语句块3
else:
语句块1
代码示例1
if...else嵌套的语句
#!/usr/bin/env python
#-*- coding:utf8 -*-
print("\n 为了您和家人的安全,请不要酒后开车\n")
var1=int(input("请输入每100毫升血液中的酒精含量度数:"))
if var1 <20:
print("您的血液中酒精含量为:{},可以开车,建议找个代驾。".format(var1))
else:
if 80 >= var1 >=20:
print("您血液中酒精含量为{},已经超标,不要开车,谢谢!".format(var1))
else:
print("您血液中酒精含量为{},请不要开车....严重超标。".format(var1))
2.1.3. 3.三元运算符¶
代码示例2
#!/usr/bin/env python
#-*- coding:utf8 -*-
a = 4
b = 5
c = a if a > b else b
print(c)
if a > b:
print(a)
else:
print(b)
if a<=b:
minalue = a
else:
minalue = b
minalue = a if a<=b else b
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/6/5 18:28
# filename: test2.py
secore = int(input("Please you enter number: "))
result = "及格" if secore >= 60 else "不及格"
print(result)
a = 5
b = 3
st = "a大于b" if a > b else "a不大于b"
# 输出"a大于b"
print(st)
# 输出"a大于b"
print("a大于b") if a > b else print("a不大于b")
# 第一个返回值部分使用两条语句,逗号隔开
st = print("crazyit"), 'a大于b' if a > b else "a不大于b"
print(st)
# 第一个返回值部分使用两条语句,分号隔开
st = print("crazyit"); x = 20 if a > b else "a不大于b"
print(st)
print(x)
c = 5
d = 5
# 下面将输出c等于d
print("c大于d") if c > d else (print("c小于d") if c < d else print("c等于d"))
2.1.4. 4.断言 assert¶
assert 断言的执行逻辑是:
if条件为Fa1se
程序引发AssertionError 错误
断言: 使用assert关键字后面接着一个条件表达式
如果条件表达式为真,证明与开发人员自己的断言一致,程序继续运行。
如果为假,则表明一定是前面发生了错误,程序停止运行,报出异常。
示例1:
assert 1!=1,"1不等于1报错,断言错误....."
#!/usr/bin/env python
#-*- coding:utf8 -*-
'''
# 伪代码
if not condition:
crash program
'''
#当不知道程序会在哪里出错,与其在运行时崩溃,不如在出现错误条件时就崩溃
x=3
assert x>0, "x is not zero or negative"
assert x%2 == 0, "x is not an even number"
'''
使用assert断言时,要注意以下几点:
(1)assert断言用来声明某个条件是真的。
(2)如果你非常确信你使用的列表中至少有一个元素,想要检验这一点,并在它非真时引发一个错误,那么assert语句是应用在这种情形下的理想语句。
(3)assert语句失败时,会引发一个AssertionError。
'''
eg
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/5/10 15:17
# filename: 断言.py
s_age = input("请输入年龄:")
age = int(s_age)
assert 20 < age < 80
print("您输入的年龄在20和80之间")
2.1.5. 5.pass 占位符¶
name="xiaoming"
if name == "xiaoming":
print("{0} hello".format(name))
elif name == "xiaozhang":
pass
else:
print("do nothing")
2.1.6. 6.is和==的区别¶
(1)==对比两个对象的值是否相等,行为可被__eq__方法重载;
(2)is判断两个对象是否是内存里的同一个东西,无法被重载。