15-7数字字符串格式化

问题描述

小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'

python 复制代码
def solution(s: str) -> str:
    # 先处理字符串,移除前导零
    # 使用 lstrip('0') 移除前面的零
    # 如果移除后为空字符串,说明输入的是 "0" 或 "0.00" 等情况,设置为 "0"
    stripped_s = s.lstrip('0') or '0'

    # 查找小数点的位置
    if '.' in stripped_s:
        integer_part, decimal_part = stripped_s.split('.')
    else:
        integer_part, decimal_part = stripped_s, ''
    
    # 格式化整数部分,使用 format 函数和千分位格式
    # 将整数部分转为千分位形式
    formatted_integer_part = f"{int(integer_part):,}"

    # 组装最终的结果
    if decimal_part:
        result = f"{formatted_integer_part}.{decimal_part}"
    else:
        result = formatted_integer_part

    return result

if __name__ == '__main__':
    # 测试用例
    print(solution("1294512.12412") == '1,294,512.12412')  # 输出: True
    print(solution("0000123456789.99") == '123,456,789.99')  # 输出: True
    print(solution("987654321") == '987,654,321')  # 输出: True
相关推荐
不会就选b5 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
杨杨杨大侠5 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
LOVE️YOU6 小时前
Python 在定义函数时,究竟定义的是什么?
python
段一凡-华北理工大学6 小时前
大模型应用开发 100 天:Python + LLM 从入门到精通 day26~Prompt 调试与优化——A/B 测试与效果评估
windows·python·大模型·prompt·智能体·提示词工程·高炉智能化
Minecraft红客6 小时前
以撒的结合
python·游戏·电脑·娱乐
Circ.6 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
风早爽太7 小时前
用 ‌Render‌ 快速部署网站和常见问题解决
python·fastapi
李航19838 小时前
给自己的图形引擎,配上了AI渲染,做设计真是太方便了
人工智能·python·计算机视觉·ai·ai编程
L@ncor8 小时前
第六章 框架开发实践 · 学习笔记(AutoGen / AgentScope / CAMEL / LangGraph)
python·框架·autogen·langgraph·agentscope
Zhou1411368 小时前
SpringSecurity_02_授权与高级功能
开发语言·python