数字字符串格式化 | 豆包MarsCode AI刷题

68 阅读2分钟

为了帮助小M实现这个任务,我们可以编写一个函数,该函数将输入的字符串转换为带千分位逗号的格式,并且去除前面的无用0。以下是实现该功能的Python代码:

def solution(s: str) -> str:
    # 去除前面的无用0
    s = s.lstrip('0')
    # 如果字符串为空,说明输入全为0,返回'0'
    if s == '':
        return '0'
    # 分离整数部分和小数部分
    if '.' in s:
        integer_part, decimal_part = s.split('.')
    else:
        integer_part, decimal_part = s, ''
    # 将整数部分转换为带千分位逗号的格式
    integer_part_with_commas = "{:,}".format(int(integer_part))
    # 如果小数部分存在,将其拼接在整数部分后面
    if decimal_part:
        return f"{integer_part_with_commas}.{decimal_part}"
    else:
        return integer_part_with_commas

if __name__ == '__main__':
    print(solution("1294512.12412") == '1,294,512.12412')
    print(solution("0000123456789.99") == '123,456,789.99')
    print(solution("987654321") == '987,654,321')

代码解释:

  1. 去除前面的无用0

    • 使用 s.lstrip('0') 去除字符串前面的无用0。如果字符串全为0,去除后会变成空字符串,因此在下一步中需要处理这种情况。
  2. 处理全为0的情况

    • 如果去除无用0后字符串为空,说明输入全为0,直接返回 '0'
  3. 分离整数部分和小数部分

    • 使用 split('.') 方法将字符串分为整数部分和小数部分。如果没有小数部分,则小数部分为空字符串。
  4. 格式化整数部分

    • 使用 "{:,}".format(int(integer_part)) 将整数部分转换为带千分位逗号的格式。
  5. 拼接整数部分和小数部分

    • 如果存在小数部分,将其拼接在整数部分后面,否则直接返回整数部分。

测试结果:

  • 该代码通过了给定的测试样例,输出结果与预期一致。