运算符们的介绍,以及结算顺序啥玩意的

本文详细介绍了Python中的算术、比较、赋值、逻辑运算符以及条件判断,包括取模、增量赋值、交叉赋值、链式赋值、解压赋值等,并探讨了可变与不可变类型的特性,如int、float、str的不可变性和list、dict的可变性。此外,还解释了成员和身份运算符的使用,以及条件判断的逻辑。

# 1.算术运算符  加减乘除、取模、取余
# print(135 + 46)
# print(3 + 5.1)
# print(3 - 1)
# print(3 * 5)
# print(10 / 3)  # 结果带小数
# print(10 // 3)  # 只保留整数部分、取模
# print(10 % 3)  # 取余数
# print(10 ** 3)  # 取次数幂

# 2.比较运算符:> < == >= <= !=
# print(10>3)
# print(10==10)
#
# print(10>=3)
# print(10<=3)
# print(10!=3)

# 3.赋值运算符
# 3.1 =:变量的赋值
x=1
y=2

# 3.2 增量赋值:+=
# age = 18
# age = age + 1
# print(age)
#
# age += 1
# print(age)
#
# age *= 3
# age /= 3
# age %= 3
# age **= 3

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

# 3.4 交叉赋值
m = 10
n = 20

# m = n  # m=n n=20  m=20
# n = m  # n=m m=20  n=20
# print(m, n)

# temp = m
# m = n
# n = temp
# print(m, n)
#
# m, n = n, m  # 交叉赋值
# print(m, n)

# 解压赋值
salaries = [111, 222, 333, 444, 555]
# 把五个月的工资取出来分别赋值给不同的变量名
# mon0 = salaries[0]
# mon1 = salaries[1]
# mon2 = salaries[2]
# mon3 = salaries[3]
# mon4 = salaries[4]
# print(mon0)
# print(mon1)
# print(mon2)
# print(mon3)
# print(mon4)
#
# mon0,mon1,mon2,mon3,mon4 = salaries
# print(mon0)
# print(mon1)
# print(mon2)
# print(mon3)
# print(mon4)

# mon0,mon1,mon2,mon3=salaries  # 对应的变量名少一个不行
# mon0,mon1,mon2,mon3,mon4,mon5=salaries  # 对应的变量名多一个也不行

# 引入*,可以帮助我们取两头的值,无法取中间的值
# 取前三个值
# x, y, z, *_ = salaries  # *会将没有对应关系的值存成列表然后赋值给紧跟*其后的那个变量名,此处这个变量名为_
# print(x, y, z)
# print(_)
#
# x, y, z, *aaa = salaries
# print(aaa)
#
# 取后三个值
# *_, x, y, z = salaries
# print(x, y, z)
# print(_)
#
#
# x, *_, y, z = salaries
# print(x, y, z)

# *_1,x,y,*_2 = salaries

# # 拓展
# _, _, *x, _ = salaries
# print(x)


# 解压赋值应用于字典时,默认解压出来的是字典的key
dic={'a':1,'b':2,'c':3}

x,y,z = dic

print(x,y,z)

'''
5.算术运算符相关
    每种方式用1个示例演示
        取模运算
        增量赋值
        交叉赋值
        链式赋值
        解压赋值
'''

逻辑运算符

# 可变不可变类型

# 可变类型:值改变,id不变,证明原值是可以被改变的

# 不可变类型:值改变,id也改变了,证明是产生新的值,压根没有改变原值;证明原值是不可被修改的

# 2.验证
# 2.1 int是不可变类型
x=10
print(id(x))
x=11  # 产生新值
print(id(x))

# 2.2 float是不可变类型
x=3.1
print(id(x))
x=3.6  # 产生新值
print(id(x))

# 2.3 str是不可变类型
x='xiaoxiao'
print(id(x))
x='xiaomin'  # 产生新值
print(id(x))

# 小结:int、float、str都被设计成了不可分割的整体,不能被改变

# 2.4 list是可变类型
l=['aaa','bbb','ccc']
print(id(l))
l[0]='AAA'
print(l)
print(id(l))

# 2.5 dict是可变类型
dic={'k1':111,'k2':222}
print(id(dic))
dic['k1']='一一一'
print(dic)
print(id(dic))

# 2.6 bool不可变
x=True
x=False


# 关于字典补充:
# 定义:{}内用逗号分隔开多个key:value,
#           其中value可以是任意类型
#           但是key必须是不可变类型

dic={
    'k1':111,
    'k2':3.1,
    'k3':[333,555],
    'k4':{'name':'xiaoxiao'}
}

dic={
    111:111,
    3.1415926:3.1,
    'k3':[333,555]
}
print(dic[3.1415926])

# dic={[1,2]:111}
# dic={{'a',1}:111}


————————————分割线————————————

# 2.什么是条件?什么可以当作条件?为什么要用条件?
# 第一大类:显式布尔值
# 2.1 条件可以是:比较运算符
age=18
print(age>16)  # 条件判断之后

# 2.2 条件可以是:True、False
# is_beautiful=True
# print(is_beautiful)

# 第二大类:隐式布尔值,所有的值都可以当成条件去用

# 1
# 'aaa'
# 3.14
# [1,23]
# ...

# 其中0、None、空(空字符串、空列表、空字典)=》代表的布尔值为False,其余都为True

# '   '
# ''

# if 条件:
#     代码

#         显式布尔值:True、False
#         隐式布尔值:所有数据类型,其中0、None、空为假
 

成员、身份运算符

# 1.not  and  or 的基本使用
# not:就是把紧跟其后的那个条件结果取反
#   not与紧跟其后的那个条件是一个不可分割的整体
# print(16>13)
# print(not 16>13)
# print(not True)
# print(not False)
# print(not 10)
#
# print(not 0)
# print(not None)
# print(not '')

# and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为True
#   条件1  and  条件2
# print(True and 10>3)
# print(True and 10>3 and 10)
# print(True and 10)
# print(10 and True)
# x = True and 10>3 and 10 and 0
# x = bool(x)
# print(True and 10>3 and 10 and 0)  # 条件全为真,结果才为True
# print(x)

# if True and 10>3 and 10 and 0:
#     print('条件为真')

#
# print(0 and 10>3 and 5 and 0 and 1>3 and 6==6 and 'xiaoxiao')  # 偷懒原则

# or:逻辑或,or用来链接左右两个条件,两个条件但凡有一个为True,最终结果就为True
#   两个条件都为False的情况下,最终结果才为False
# print(3>2 or 0)
#
# print(3>2 or 10 or 3 != 2 or 1>2 or True  # 偷懒原则


# 2.优先级 not>and>or
#   如果单独就只是一串and链接,或者说单独只是一串or链接,按照从左到右的顺序依次运算即可
#   如果是混用,则需要考虑优先级

x = 3>4 and not 4>3 or 1==3 and 'x'=='x' or 3>3
x = bool(x)
print(x)


3>4 and not 4>3 or 1==3 and 'x'=='x' or 3>3
3>4 and (not 4>3) or 1==3 and 'x'=='x' or 3>3
3>4 and False or 1==3 and 'x'=='x' or 3>3
(3>4 and False) or (1==3 and 'x'=='x') or 3>3
False or False or 3>3
False or 3>3
False


(3>4 and (not 4>3)) or (1==3 and 'x'=='x') or 3>3

# 加括号
3>4 and not 4>3 or 1==3 and 'x'=='x' or 3>3


(3>4 and not 4>3) or (1==3 and 'x'=='x') or 3>3

res = (3>4 and not 4>3) or (1==3 and 'x'=='x') or 3>3
print(res)


---------------------------------------------------------------

# 1.成员运算符

print("xiaoxiao" in "hello xiaoxiao")  # 判断一个字符串是否存在于一个大写字符串中
print("x" in "hello xiaoxiao")

print(111 in [111,222,33])  # 判断元素是否存在于列表
print(111 in ['111',222,33])

# 判断key是否存在于字典
print(111 in {"k1":111,"k2":456})  # False
print("k1" in {"k1":111,"k2":456})  # True


print('-'*20)
# not in
print("xiaoxiao" not in "hello xiaoxiao")  # 推荐使用
print(not "xiaoxiao" in "hello xiaoxiao")  # 逻辑同上,但语义不明确,不推荐


# 2.身份运算符: is
# is,判断的是id是否相等

print('-'*20)

x='12345678'
y='12345678'

print(x==y)
print(x is y)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值