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()

 

posted @ 2022-01-20 15:40  liDB  阅读(69)  评论(0编辑  收藏  举报