MST

星途 面试题库

面试题:Python基本类型函数之专家难度题

在Python中,`int()`函数在将字符串转换为整数时,默认以十进制为基数。请实现一个自定义函数`custom_int()`,该函数接受一个字符串和一个可选参数`base`(默认值为10),能够像`int()`函数一样将字符串转换为整数,但支持从二进制(`base=2`)到三十六进制(`base=36`)的转换。同时,要处理各种异常情况,例如输入的字符串不符合指定进制规则、`base`值不在有效范围内等,并给出合理的错误提示。请详细说明实现思路以及使用到的Python基本类型函数及其原理。
14.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
def custom_int(s, base=10):
    """
    将字符串按照指定进制转换为整数

    参数:
    s -- 要转换的字符串
    base -- 进制数,默认值为10,取值范围为2到36

    返回:
    转换后的整数

    异常:
    ValueError -- 如果字符串不符合指定进制规则或base值不在有效范围内
    """
    if not isinstance(s, str):
        raise ValueError("第一个参数必须是字符串")
    if not isinstance(base, int) or base < 2 or base > 36:
        raise ValueError("base必须是2到36之间的整数")
    try:
        return int(s, base)
    except ValueError as e:
        raise ValueError(f"字符串 '{s}' 不符合 {base} 进制规则: {e}")

实现思路

  1. 参数类型检查:首先检查传入的 s 是否为字符串类型,base 是否为整数类型且在2到36的范围内。如果不满足条件,抛出 ValueError 异常并给出相应错误提示。
  2. 使用内置 int() 函数:Python 内置的 int() 函数本身支持将字符串按照指定进制转换为整数,直接调用 int(s, base)
  3. 异常处理:如果 int(s, base) 调用过程中引发 ValueError 异常,捕获该异常并重新抛出一个更详细的 ValueError 异常,说明字符串不符合指定进制规则。

使用到的Python基本类型函数及其原理

  1. isinstance():用于判断一个对象是否为指定的类型。例如 isinstance(s, str) 判断 s 是否为字符串类型,isinstance(base, int) 判断 base 是否为整数类型。其原理是检查对象的类型信息与指定类型是否匹配。
  2. int():将字符串按照指定的进制转换为整数。int(s, base) 中,s 是要转换的字符串,base 是进制数。它会根据 base 的值解析字符串,例如 base=2 时,字符串只能由 01 组成;base=16 时,字符串可以包含 0-9a-f(或 A-F)。如果字符串格式不符合指定进制要求,会抛出 ValueError 异常。