【2020Python修炼记6】Python语法入门—运算符

 

1、算数运算符(加减乘除 一般是用于数字)

+
字符串+字符串
列表+列表
字典+字典

/// 地板除,只取整数部分(不会进行四舍五入)
% 相除取余
** 取幂
print(10/3)
print(10//3)
print(10 % 3)  # 10 的三次方
 

2、比较运算符

===

(了解 大于小于 的其他用处)
字符串也可比较大小(逐一比较每个字符的ASCII码值)
列表也可按照位置 逐一比较大小

 

3、赋值运算符

(1)  = 增量
    age = 18
    age += 3   # age = age + 3
    print(age)

    year = 20
    year -= 3
    print(year)

(2)链式赋值
    x=y=z=10
    print(x,y,z)
    print(id(x),id(y),id(z))

(3)交叉赋值
一般思路
m=10
n=2
print(m,n)

temp = m
m=n
n=temp
print(m,n)

交叉赋值,一句搞定  m,n = n,m
m=10
n=2
m,n = n,m
print(m,n)

(4) 解压赋值
一个包,里面有很多个值-----列表,字典,字符串
字符串、字典、元组、集合类型都支持解压赋值

常规取值方式---列表
money = [11,22,33,44,55]
res1 = money[0]
res2 = money[1]
res3 = money[2]
res4 = money[3]
res5 = money[4]

-列表解压取值
money = [11,22,33,44,55]
--取全部的值(变量名的个数需要与“压缩包”里的值的个数一致,不能多也不能少)
res1,res2,res3,res4,res5 = money

--取前两个值  将其余不需要的值 赋值给—— _ (接收一个想要废弃的变量) *_ (接收多个想要废弃的变量)
res1,res2,*_ = money

--取后两个值
*_,res4,res5 = money

--取前一个和最后一个值
res1,*_,res5 = money

-字典解压取值
dic = {'name':'cc','age':18,'hobby':'reading'}
x1,x2,x3 = dic # 获取字典的key,
print(dic[x1],dic[x2],dic[x3])  # 利用字典的key,取出字典里对应的值

 

4、逻辑运算符号

能辨出真假的两个量 之间进行比较,判断真假
not  and  or

--布尔值
    --显式布尔值 —— 一眼辨真假
        比较运算
        True False
    (1)比较运算的结果
    print(10 > 3)
    print(10 == 3)
    (2)变量值直接就是True或False
    tag = True

    --隐式布尔值 —— 表面上看上去是一种值,在底层会被解释器转换成True或False
       0、None、空对应的布尔值为False,其余值对应的布尔值均为True



--三大逻辑运算符——用于连接多个条件;
    not  and  or
    --not 条件         --对 条件 进行 取反

    --条件1 and 条件2  --and 连接左右两个条件,必须左右都为True,结果才为真。一假则假,真真才真

    --条件1 or 条件2   -- or 连接左右两个条件,必须左右都为False,结果才为假。假假才假,一真则真



--优先级    not > and > or
    开发过程中,常用括号来划分优先级(可以打破 not > and > or 的优先级(括号的优先级更高))。
    如果没有括号,也可以自己加括号,先以and为单位,将and左右的条件,一并括起来,然后按照 not > and > or 的优先级开始逻辑运算,同时使用 短路运算

    (1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割

    (2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可

    (3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算


--短路运算(偷懒原则)
逻辑运算的结果一旦可以确定,那么就以当前处 计算到的值作为最终结果返回
(在判断or左右的条件时,如果全真取真(或者全假取假),就近原则取值)

eg:
1\
>>> 10 and 0 or '' and 0 or 'abc' or 'egon' == 'dsb' and 333 or 10 > 4
我们用括号来明确一下优先级
>>> (10 and 0) or ('' and 0) or 'abc' or ('egon' == 'dsb' and 333) or 10 > 4
短路:       0      ''            'abc'
            假     假              真

返回:                            'abc'

2\
print(1 or 3 and 4)
print(1 and 0 or 0 and 3)
print(0 and 3 and 1)
print(1 and 2 or 1)
print(-31 and 2 or 1 or 4)
print(33 or False and 1 or 5)

输出结果:
1
0
0
2
2
33

 

5、成员运算符

in 
not in 


>>> not 'lili' in ['jack','tom','robin']
True
# 推荐使用第二种
>>> 'lili' not in ['jack','tom','robin']
True

 

6、身份运算符

# 比较 id
is
is not

# ==双等号比较的是value是否相等,而is比较的是id是否相等

#1. id相同,内存地址必定相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同,如下

>>> x='Info Tony:18'
>>> y='Info Tony:18'
>>> id(x),id(y) # x与y的id不同,但是二者的值相同
(4327422640, 4327422256)


>>> x == y # 等号比较的是value
True
>>> type(x),type(y) # 值相同type肯定相同
(<class 'str'>, <class 'str'>)
>>> x is y # is比较的是id,x与y的值相等但id可以不同
False

 

 参考:

https://zhuanlan.zhihu.com/p/108684774

 

posted @ 2020-03-06 08:50  bigorangecc  阅读(171)  评论(0编辑  收藏  举报