# 逻辑运算符多用于判断
# == 等于
# 判断是否成立
# False
print(1 == 2)
# < 小于
# 判断是否成立
# True
print(1 < 2)
# > 大于
# 判断是否成立
# False
print(1 > 2)
# <= 小于等于
# 判断是否成立
# True
print(1 <= 2)
# >= 大于等于
# 判断是否成立
# False
print(1 >= 2)
# 与或非 逻辑运算符
# and 与
# and 两边的条件必须都成立为 True, 否则为 False
# input_user == user and input_password == password
# or 或
# or 两边的条件只须要其中一个成立就能够了
# input_user == user or input_phone == phone
# not 取反
# 运算符优先级
# 优先级从上到下顺次递加
# ** 幂运算
# 打印
# 8
print(2**3)
# + - 一元运算符(正负号)
# 正号(+)不会对数字产生任何影响
# 1
print(+1)
# 减号(-)能够对数字进行负号的取反
# -1
print(-1)
# % / * 算术运算符
# % 取余
# 1
print(10 % 3)
# / 除
# 3.1
print(9.3 / 3)
# * 乘
# 9
print(3 * 3)
# + - 算术运算符
# + 加
# 2
print(1 + 1)
# - 减
# 3
print(5 - 2)
# < > <= >= == !=
# < 小于
# True
print(1 < 2)
# > 大于
# False
print(1 > 2)
# <= 小于等于
# True
print(2 <= 3)
# >= 大于等于
# False
print(2 >= 3)
# == 恒等于
# True
print(2 == 2)
# != 不等于
# False
print(2 != 2)
# = /= -= += *= %= **= //= 赋值运算符
# a = b 赋值
# a /= b 等价于 a = a / b
# a -= b 等价于 a = a - b
# a += b 等价于 a = a + b
# a *= b 等价于 a = a * b
# a %= b 等价于 a = a % b
# a **= b 等价于 a = a ** b
# a //= b 等价于 a = a // b 整数除法
# is is not 身份运算符
# 用于比拟两个对象的内存地址是否统一
# 赋值
num_1 = "hello world"
num_2 = "hello world"
# 打印内存地址
# 1592544406832
print(id(num_1))
# 1592544406832
print(id(num_2))
# True
print(num_1 is num_2)
# False
print(num_1 is not num_2)
# in not in 成员运算符
# 赋值
num_3 = ["hello", "world", "i", "love", "python"]
# 判断
# True
print("world" in num_3)
# 判断
# False
print("world" not in num_3)
# not > and > or 逻辑运算符
"""
格式化拼接(4)
+
join
format
%
%s 代表 字符串 (罕用)
%d 代表 整数 (理解)
%f 代表 浮点数 (理解)
"""
# 格式化拼接
# 赋值
num_1 = "hello"
num_2 = "world"
# +
# 打印
# hello world
print(num_1 + " " + num_2)
# join
# 打印
# hello world python
print("".join([num_1, num_2,"python"]))
# format
# 打印
# hello world
# print("{} {}".format(num_1, num_2))
# 也能够这样用
# hello world
print(f"{num_1} {num_2}")
# %
# 打印
# name:qi age:18 height:1.730000
print("name:%s age:%d height:%f" % ("qi", 18, 1.73))
# 字符串的格式化
# 打印
# 2.300000
print("%f" % 2.3)
# %.2f 保留两位小数 五舍六入
# 2.30
print("%.2f" % 2.3)
# %6.2f 总共位数变成 6
# 2.30
print("%6.2f" % 2.3)
# num=%6.2f 后面能够加值
# 2.30
print("num_3=%6.2f" % 2.3)
# 保留两位小数
# 12.33
print('{:.2f}'.format(12.333))
# 赋值
# 12.33
print('{num_4:.2f}'.format(num_4=12.333))
# 用即显示,不必则不显示
# 12.33
print('{num_5:.2f}'.format(num_5=12.333, num=13.444))
# 十进制 (20) 转换为八进制
# 24
print('{:o}'.format(20))
# 十进制 (20) 转换为十六进制
# 14
print('{:x}'.format(20))
"""罕用于传输"""
# 赋值
num = b"hello"
# 查看类型
# <class 'bytes'>
print(type(num))
# 赋值
num = "人生苦短 我用 python"
# 把中文转换成字节类型
# bytearray 数组
li = bytearray(num.encode())
# 打印
# bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad \xe6\x88\x91\xe7\x94\xa8python')
print(li)
"""
encode() 编码
decode() 解码
编码格局
utf-8 (罕用) unicode 万国码
每三个字节对应一个字符
中国人用的 GPK
每两个字节对应一个字符
"""
# 编码
# 括号里不带编码格局,默认 utf-8
# 括号里带编码格局,就必须以编码格局解码 不区别大小写
# 赋值
num_1 = "星越科技".encode()
# 打印
# b'\xe6\x98\x9f\xe8\xb6\x8a\xe7\xa7\x91\xe6\x8a\x80'
print(num_1)
# 解码
num_2 = num_1.decode()
# 打印
# 星越科技
print(num_2)
# 用 gbk 编码,utf- 8 解码会报错
# 用 utf- 8 编码,gbk 解码会乱码
# 赋值
num_3 = "星越科技".encode('UTF-8')
print(num_3)
# 解码
# 鏄熻秺绉戞妧
print(num_3.decode('gbk'))
# 赋值
num = 99
# 10 进制转 2 进制
# 0b1100011
print(bin(num))
# 优化
# 1100011
print(bin(num)[2:])
# 10 进制转 8 进制
# 0o143
print(oct(num))
# 优化
# 143
print(oct(num)[2:])
# 10 进制转 16 进制
# 0x63
print(hex(num))
# 优化
# 63
print(hex(num)[2:])