Python--数字、字符串、字节
一点点关于数字、字符串、字节的小知识
def main(): print('整数除法 5 / 3 =', 5 / 3) print('整数整除 5 // 3 =', 5 // 3) print('整数取余 5 % 3 =', 5 % 3) print('浮点数除法 5.0 / 3.0 =', 5.0 / 3.0) print('浮点数整除 5.0 // 3.0 =', 5.0 // 3.0) print('浮点数取余 5.0 % 3.0 =', 5.0 % 3.0) print('浮点数除法 2.75 / 0.5 =', 2.75 / 0.5) print('浮点数整除 2.75 // 0.5 =', 2.75 // 0.5) print('浮点数取余 2.75 % 0.5 =', 2.75 % 0.5) print('负数浮点数除法 -5.0 / 3.0 =', -5.0 / 3.0) # -1.66666.... print('负数浮点数整除 -5.0 // 3.0 =', -5.0 // 3.0) # -1.666666... 向下取整是-2 而不是-1 print('负数浮点数取余 -5.0 % 3.0 =', -5.0 % 3.0) # 1 计算方法是: -5 - (3 * -2) = 1 print('幂运算 pow(3, 2) =', pow(3, 2)) print('幂运算 3 ** 2 =', 3 ** 2) print('幂运算 -3 ** 2 =', -3 ** 2) # **的优先级比负号-高 print('幂运算 (-3) ** 2 =', (-3) ** 2) # 复数 import cmath print('负数开方结果为复数', cmath.sqrt(-1)) print('复数', (1 + 3j) * (9 + 4J)) # j可以小写也可以大写 print('二进制数0b110', 0b110) print('八进制数0o110', 0o110) print('十六进制数0x110', 0x110) print('10转二进制', bin(10)) print('0o110转二进制', bin(0o110)) print('0x110转二进制', bin(0x110)) print('10转八进制', oct(10)) print('10转十六进制', hex(10)) print('二进制字符串0b110转整形', int('0b110', 2)) print('八进制字符串0o110转整形', int('0o110', 8)) print('十六进制字符串0x110转整形', int('0x110', 16)) s = '你好' print('原始字符串', s) s_bytes = s.encode() print('字符串转字节', s_bytes) s_bytes_hex = s_bytes.hex() print('字节转16进制字符串', s_bytes_hex) hex_s_bytes = bytes.fromhex(s_bytes_hex) print('16进制字符串转字节', hex_s_bytes) s_bytes_decode = s_bytes.decode() print('字节转字符串', s_bytes_decode) bytes_list = list(s_bytes) print('字节转列表', bytes_list) list_bytes = bytes(bytes_list) print('列表转字节', list_bytes) s_unicode = [ord(c) for c in s] print('字符串转unicode列表', s_unicode) unicode_s = ''.join([chr(c) for c in s_unicode]) print('unicode列表转字符串', unicode_s) unicode_hex = [hex(c) for c in s_unicode] print('unicode十六进制格式', unicode_hex) s_unicode_bytes = s.encode('unicode_escape') print('字符串转十六进制格式unicode的字节', s_unicode_bytes) unicode_bytes_s = s_unicode_bytes.decode('unicode_escape') print('十六进制格式unicode的字节转字符串', unicode_bytes_s) ''' 运行结果 整数除法 5 / 3 = 1.6666666666666667 整数整除 5 // 3 = 1 整数取余 5 % 3 = 2 浮点数除法 5.0 / 3.0 = 1.6666666666666667 浮点数整除 5.0 // 3.0 = 1.0 浮点数取余 5.0 % 3.0 = 2.0 浮点数除法 2.75 / 0.5 = 5.5 浮点数整除 2.75 // 0.5 = 5.0 浮点数取余 2.75 % 0.5 = 0.25 负数浮点数除法 -5.0 / 3.0 = -1.6666666666666667 负数浮点数整除 -5.0 // 3.0 = -2.0 负数浮点数取余 -5.0 % 3.0 = 1.0 幂运算 pow(3, 2) = 9 幂运算 3 ** 2 = 9 幂运算 -3 ** 2 = -9 幂运算 (-3) ** 2 = 9 负数开方结果为复数 1j 复数 (-3+31j) 二进制数0b110 6 八进制数0o110 72 十六进制数0x110 272 10转二进制 0b1010 0o110转二进制 0b1001000 0x110转二进制 0b100010000 10转八进制 0o12 10转十六进制 0xa 二进制字符串0b110转整形 6 八进制字符串0o110转整形 72 十六进制字符串0x110转整形 272 原始字符串 你好 字符串转字节 b'\xe4\xbd\xa0\xe5\xa5\xbd' 字节转16进制字符串 e4bda0e5a5bd 16进制字符串转字节 b'\xe4\xbd\xa0\xe5\xa5\xbd' 字节转字符串 你好 字节转列表 [228, 189, 160, 229, 165, 189] 列表转字节 b'\xe4\xbd\xa0\xe5\xa5\xbd' 字符串转unicode列表 [20320, 22909] unicode列表转字符串 你好 unicode十六进制格式 ['0x4f60', '0x597d'] 字符串转十六进制格式unicode的字节 b'\\u4f60\\u597d' 十六进制格式unicode的字节转字符串 你好 ''' if __name__ == '__main__': main()