当前位置: 首页> 娱乐> 明星 > 南阳建网站企业_公司部门名称大全_武汉网站关键词推广_郑州seo优化外包热狗网

南阳建网站企业_公司部门名称大全_武汉网站关键词推广_郑州seo优化外包热狗网

时间:2025/7/10 11:08:25来源:https://blog.csdn.net/qq_73454087/article/details/144117123 浏览次数:0次
南阳建网站企业_公司部门名称大全_武汉网站关键词推广_郑州seo优化外包热狗网

数字字符串格式化 - MarsCode

问题描述

小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序,完成这个任务。


测试样例

样例1:

输入:s = "1294512.12412"
输出:'1,294,512.12412'

样例2:

输入:s = "0000123456789.99"
输出:'123,456,789.99'

样例3:

输入:s = "987654321"
输出:987,654,321'

def solution(s: str) -> str:# 去除前导零s = s.lstrip('0')  # 去除字符串前面的 '0'if s == '':s = '0'  # 如果去除前导零后字符串为空,则将其设置为 '0'# 分离整数和小数部分parts = s.split('.')  # 将字符串按小数点分割为整数部分和小数部分int_s = parts[0]  # 获取整数部分dec_s = parts[1] if len(parts) > 1 else ""  # 获取小数部分,如果没有小数部分则设置为空字符串# 处理整数部分,插入千分位逗号reversed_part = int_s[::-1]  # 将整数部分反转with_commas = ','.join(reversed_part[i:i+3] for i in range(0, len(reversed_part), 3))  # 每三位插入一个逗号int_s_with_commas = with_commas[::-1]  # 将插入逗号后的字符串反转回来# 合并结果result = int_s_with_commas  # 初始化结果为处理后的整数部分if dec_s:result += '.' + dec_s  # 如果有小数部分,则将其添加到结果中return result  # 返回最终结果if __name__ == '__main__':print(solution("1294512.12412") == '1,294,512.12412')  # 测试用例1print(solution("0000123456789.99") == '123,456,789.99')  # 测试用例2print(solution("987654321") == '987,654,321')  # 测试用例3

详细注释

  1. 去除前导零

    s = s.lstrip('0')  # 去除字符串前面的 '0'if s == '':s = '0'  # 如果去除前导零后字符串为空,则将其设置为 '0'
    • s.lstrip('0'):去除字符串 s 前面的所有 0
    • if s == '': s = '0':如果去除前导零后字符串为空,则将其设置为 '0'
  2. 分离整数和小数部分

    parts = s.split('.')  # 将字符串按小数点分割为整数部分和小数部分int_s = parts[0]  # 获取整数部分dec_s = parts[1] if len(parts) > 1 else ""  # 获取小数部分,如果没有小数部分则设置为空字符串
    • s.split('.'):将字符串 s 按小数点分割为整数部分和小数部分。
    • int_s = parts[0]:获取整数部分。
    • dec_s = parts[1] if len(parts) > 1 else "":获取小数部分,如果没有小数部分则设置为空字符串。
  3. 处理整数部分,插入千分位逗号

    reversed_part = int_s[::-1]  # 将整数部分反转with_commas = ','.join(reversed_part[i:i+3] for i in range(0, len(reversed_part), 3))  # 每三位插入一个逗号int_s_with_commas = with_commas[::-1]  # 将插入逗号后的字符串反转回来
    • int_s[::-1]:将整数部分反转。
    • ','.join(reversed_part[i:i+3] for i in range(0, len(reversed_part), 3)):每三位插入一个逗号。
    • with_commas[::-1]:将插入逗号后的字符串反转回来。
  4. 合并结果

    result = int_s_with_commas  # 初始化结果为处理后的整数部分if dec_s:result += '.' + dec_s  # 如果有小数部分,则将其添加到结果中return result  # 返回最终结果
    • result = int_s_with_commas:初始化结果为处理后的整数部分。
    • if dec_s: result += '.' + dec_s:如果有小数部分,则将其添加到结果中。
    • return result:返回最终结果。
def solution(s: str) -> str:# 去除前导零s = s.lstrip('0')if s == '':s = '0'# 分离整数和小数部分parts = s.split('.')integer_part = parts[0]decimal_part = parts[1] if len(parts) > 1 else ""# 处理整数部分,插入千分位逗号reversed_part = integer_part[::-1]with_commas = ','.join(reversed_part[i:i+3] for i in range(0, len(reversed_part), 3))integer_part_with_commas = with_commas[::-1]# 合并结果result = integer_part_with_commasif decimal_part:result += '.' + decimal_partreturn result# 测试用例
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')

关键字:南阳建网站企业_公司部门名称大全_武汉网站关键词推广_郑州seo优化外包热狗网

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: