06运算符

06-运算符[Python基础]

算术运算符
比较运算符
赋值运算符
逻辑运算符
成员运算符
身份运算符

# 1.算数运算符:+ / // % **

print(10 + 3.1)

print(10 + 3)

print(10 / 3) # 结果带小数

print(10 // 3) # 只保留整数部分

print(10 % 3) # 取模、取余数

print(10 ** 3) # 取模、取余数

# 2.比较运算符:> >= < <= == !=

print(10 > 3)

print(10 == 10)

print(10 >= 10)

print(10 >= 3)

# name = input("your name: ")

# print(name == "ly")

# 3.赋值运算符

# 3.1 变量赋值

# 3.2增量复制

age = 18

age += 1 # age=age+1

print(age)

age *= 3

age /= 3

age %= 3

age **= 3

# 3.3.链式赋值

x = 10

y = x

z = y

z = y = x = 10

print(x, y, z)

print(id(x), id(y), id(z))

# 3.4.交叉赋值

m = 10

n = 20

print(m, n)

# 交换值

# temp = m

# m = n

# n = temp

# print(m,n)

m, n = n, m

print(m, n)

# 3.5解压赋值

salaries = [111, 222, 333, 444, 555]

# # 把五个月的工资取出来分别赋值给不同的变量名

# mon0 = salaries[0]

# mon1 = salaries[1]

# mon2 = salaries[2]

# mon3 = salaries[3]

# mon4 = salaries[4]

# # 解压赋值

# 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[111, 222, 333, 444, 555] # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为_

print(x, y, z)

print(_)

# 取后三个值

# *_,x,y,z=salaries=[111,222,333,444,555]

# print(x,y,z)

# x,*_,y,z=salaries=[111,222,333,444,555]

# print(x,y,z)

# salaries=[111,222,333,444,555]

# _,*middle,_=salaries

# print(middle)

# 解压字典默认解压出来的是字典的key

x, y, z = dic = {"a": 1, "b": 2, "c": 3}

print(x, y, z)

# 逻辑运算符

# 1. not、and、or的基本使用

# 1.1 not:就是把紧跟其后的那个条件结果取反

# ps:not与紧跟其后的那个条件是一个不可分割的整体

print(not 16 > 13) # False

print(not True) # False

print(not False) # True

print(not 10) # False

print(not 0) # True

print(not None) # True

print(not "") # True

# 1.2 and:逻辑与,用于连接两个条件,两个条件同时成立时才返回True,但凡有一个条件为False则返回False

print(True and 10 > 3) # True

# ps:可以用and连接多个条件,会按照从左到右的顺序一次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果为False,只有在所有条件的结果都为True的情况下,最终结果才为True。

print(2 > 1 and 1 != 1 and True and 3 > 2) # False

# 1.3 or:逻辑或,用于连接两个条件,两个条件但凡有一个条件成立时就返回True,只有在两个条件同时为Fasle时才返回False

print(3 > 2 or 0) # True

# ps:可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果为True,只有在所有条件的结果都为Fasle的情况下,最终结果才为False

print(2 > 1 or 1 != 1 or True or 3 > 2) # True

# 2.优先级not>and>or,同一优先级默认从左往右计算。

# 原理:

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

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

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

print(3>4 and 4>3 or 1==3 and "x" == "x" or 3 >3) # False

print((3>4 and 4>3) or (1==3 and "x" == "x") or 3 >3) # False

# 1.成员运算符 in、(not in)

# 1.1 in:某一个对象包含于另外一个对象则返回True

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

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

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

print(111 in {"k1": 111, "k2": 222}) # False

print("k1" in {"k1": 111, "k2": 222}) # True

# 1.2 not in:某一个对象没有包含于另外一个对象则返回True

print("egon" not in "hello egon") # False

# 2.身份运算符 is、(is not)

# 2.1 is:比较的是id,两个对象的id相同则返回True

x = 10

y = x

print(id(x), id(y))

print(x is y) # x与y的id相同(1709662720 1709662720)

# 2.2 is not:在两个对象的id不同时is not会返回True

m = "xx"

n = "yyy"

print(id(m), id(n)) # m与n的id不同(2470609030032 2470609029976)

print(m is not n) # True

# 2.3 补充 == 与 is

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

# 2.3.1 id相同,内存地址必定相同,意味着type和value必定相同

# 2.3.2 value相同,type肯定相同,但id可能不同

x = "Info Tony:18"

y = "Info Tony:18"

print(id(x), id(y)) # x与y的id不同,但是二者的值相同 (2850804534832, 2850803860400)

print(x == y) # 等号比较的是value

print(type(x), type(y)) # 值相同type肯定相同

print(x is y) # is比较的是id,x与y的值相等但id可以不同

以上是 06运算符 的全部内容, 来源链接: utcz.com/z/538079.html

回到顶部