Python面试题更新 2026-08-03

在 Python 编程中,如何表示和操作不同进制的数字?请说明二进制、八进制、十进制和十六进制的字面量写法,以及如何在它们之间进行转换。

考察说明

考查对Python数字进制表示及转换的掌握程度。

回答思路

  1. 【回答框架 1】Python中数字字面量可通过前缀区分进制:二进制以0b或0B开头,八进制以0o或0O开头,十六进制以0x或0X开头,十进制无前缀。例如0b101表示5,0o17表示15,0x1F表示31。
  2. 【回答框架 2】内置函数int(str, base)可将指定进制的字符串转换为十进制整数,其中base取值范围为2到36,且字符串中不能包含前缀。例如int('101', 2)返回5,int('17', 8)返回15,int('1F', 16)返回31。
  3. 【回答框架 3】十进制整数转换为其他进制字符串可使用内置函数bin()、oct()、hex(),分别返回带0b、0o、0x前缀的字符串。例如bin(10)返回'0b1010',oct(10)返回'0o12',hex(255)返回'0xff'。
  4. 【回答框架 4】若需自定义进制转换,可结合除法取余法或使用循环实现,但一般不推荐,因为内置函数已覆盖常见需求。对于非标准进制如三进制,可用循环和字符串操作实现,但需注意负数和浮点数的处理。
  5. 【回答框架 5】格式化输出时,可使用format(value, 'b')、format(value, 'o')、format(value, 'x')等格式说明符,得到无前缀的字符串,便于字符串拼接或嵌入。例如format(10, 'b')返回'1010'。
  6. 【关键点 1】二进制用0b前缀,八进制用0o,十六进制用0x,十进制无前缀。
  7. 【关键点 2】int(str, base)可解析带base的字符串为十进制整数,字符串中不加前缀。
  8. 【关键点 3】bin()、oct()、hex()将十进制整数转为带前缀的字符串。
  9. 【关键点 4】format(value, '进制格式符')可生成无前缀的字符串。
  10. 【关键点 5】Python 3中八进制字面量必须使用0o前缀,0开头的写法已废弃。
  11. 【易错点 1】int()解析时若字符串包含前缀或非法字符会抛出ValueError,需确保字符串格式正确。
  12. 【易错点 2】浮点数无法直接用bin()等函数转换为二进制字符串,需先处理整数部分和小数部分。
  13. 【易错点 3】不同进制转换时注意大小写不影响数值,但输出默认使用小写字母如'a',若需大写可结合upper()方法。