控制结构: 顺序, 分支, 循环, 理解了, 其实编程就入门一半了.
条件表达式
条件表达式的值只要不是:0 、 None、 False、 空列表、 空元组、 空集合、 空字典、 空字符串、 空range对象、或其他空迭代对象,Python解释器均认为与True等价
关系运算符
1 < 2 < 3 # 等价于 1 < 2 and 2 < 3
True
1 < 2 > 3
False
1 < 3 > 2
True
if a = 3: # 条件表达式中不允许使用赋值运算符
File "", line 1
if a = 3: # 条件表达式中不允许使用赋值运算符
^
SyntaxError: invalid syntax
关系运算符具有惰性计算的特点,只计算必须计算的值,而不是计算关系表达式中的每个表达式
1 > 2 < sdkfjs # 后面的没有被运行哦, 程序没有报错呢
False
逻辑运算符
not and or 跟关系运算符类似,也具有短路(惰性)求值的特点,只计算必须计算表达式的值而非每个表达式的值
我总结如下:
exp1 and exp2:
exp1 为True, 返回exp2的值(不论真假) # True: 除了0, None, False, 空序列(list/tuple/set/dict/str/range)等,都是True
exp2 不为True, 直接返回exp1的值
exp1 or exp2:
exp1 为True, 返回exp2的值(不论真假) # True: 除了0, None, False, 空序列(list/tuple/set/dict/str/range)等,都是True
exp2 不为True, 直接返回exp1的值
not and or 跟关系运算符类似,也具有短路(惰性)求值的特点,只计算必须计算表达式的值而非每个表达式的值
我总结如下:
exp1 and exp2
exp1 为True, 返回exp2的值(不论真假) # True: 除了0, None, False, 空序列(list/tuple/set/dict/str/range)等,都是True
exp2 不为True, 直接返回exp1的值
exp1 or exp2
exp1 为True, 直接exp1的值
exp2 不为True, 返回exp2的值(不论真假)
在设计包含多个条件表达式时,若能大概预测不同条件失败的概率,并将多个条件根据and、or 逻辑运算符的短路求值来组织顺序,可以提高程序运行效率
3 and 5 # and: exp1 为真,返回exp2表达式的值,5
5
3 or 5 # or: exp1 为真, 直接返回exp1 的值 3
3
not 3 # 等价于 not True 即False
False
not 0 # 等价于 not False 即True
True
not None # 不是空,即True
True
# 用指定分隔符把多个字符串拼接成一个字符串,未指定则使用逗号
def str_join(char_list, sep=None):
return (sep or ',').join(char_list) # seq or ',' seq真,seq; seq不真,返回‘,’的值
s = ['c', 'h', 'e', 'n', 'j', 'i', 'e']
print(str_join(s))
print(str_join(s, ':'))
print(str_join(s, "@"))
c,h,e,n,j,i,e
c:h:e:n:j:i:e
c@h@e@n@j@i@e
选择结构
单分支选择 if
if 为真,则执行if里面的代码,否则则不执行,继续往下走
s = input("Input two numbers;"