# 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可以不同
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 »
06-运算符