# 算术运算符
# + 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作)
# - 减法运算符
# * 乘法运算符(如果将字符串和数字相乘,则会对字符串进行复制操作,将字符串重复指定次数)
# / 除法运算符,运算时结果总会返回一个浮点类型
# //整除,只会保留计算后的整数位,总会返回一个整数
# **幂运算,
a = 10 + 5
a = 'hello' + '' + 'world'
a = 10 - 5
a = 5 - True
a = a -2
a = 5 * 5
a = 10 / 5
a = 5 / 2
a = 5 / 0
a = 10 / 3
a = 10 // 3
a = 5 // 2
a = 2 ** 2
a = 16 ** 0.5
a = 10 % 5
print('a = ' ,a)
# 赋值运算符,=可以将等号右侧的值赋值给等号左边的变量
a = 10
a = 30
a += 5
a -= 5
a %= 5
a *= 5
a **= 5
a /= 7
a //= 4
print(a)
# 关系运算符,用来比较两个值之间的关系,总会返回一个布尔值
# 如果关系成立,返回True,否则返回Flase.
# > 比较左侧值是否大于右侧值
# >= 比较左侧的值是否大于或等于右侧的值
# < 比较左侧的值是否小于右侧的值
# <= 比较左侧的值是否小于或等于右侧的值
# == 比较左侧和右侧的值是否相等,不是比较的id
# != 比较左侧和右侧的值是否不相等,不是比较的id
# is / is not 比较的是id
result = 10 > 20
result = 10 < 20
result = 10 >= 10
result = 20 <= 20
result = 2 > True #
result = 2 > '1'
result = '2' > '1' True
result = '2' > '11' True
# 对两个字符串比较大小时,实际上比较的是字符串的unicode编码,可用于对字母进行排序,但是不支持中文排序
result = 'a' > 'b'
result = 'ab' > 'f' # 逐位比较
result = 1 == 1
result = 1 != 1
result = 'abc' == 'abc'
result = 'abd' == 'fdd'
result = 1 == True
result = 1 is True # 比较id
result = 1 is not True
print(id(1),id(True))
print(result)
# 逻辑运算符,主要用来做一些逻辑判断,
# not 非,对于非布尔值,会先转为布尔值在取反,布尔值直接取反
# and 与
# or 或
a = True
a = not a
a = 1
a = ''
a = not a
a = True and True
a = True and False
a = False and True
a = False and False
a = 1 and 2
a = 1 and 0
a = 0 and 1
a = 0 and None
a = 1 or 2
a = 1 or 0
a = 0 or 2
a = 0 or None
print(a)
# 条件运算符
# 语法 语句1 if 条件表达式 else 语句2
# 执行流程,先对条件表达式进行判断,判断结果为True执行语句1,否则执行语句2,并返回结果
print('你好') if True else print('hello')
a = 20
b = 30
_max = a if a > b else b
print(_max)