python练习3

小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 add_commas(s):
    # 去除前面无用的0
    s = s.lstrip('0')
    if not s:
        return '0'
    # 判断是否有小数部分
    if '.' in s:
        integer_part, decimal_part = s.split('.')
    else:
        integer_part, decimal_part = s, ''
    result = []
    while integer_part:
        result.insert(0, integer_part[-3:])
        integer_part = integer_part[:-3]
    integer_part_with_commas = ','.join(result)
    if decimal_part:
        return integer_part_with_commas + '.' + decimal_part
    else:
        return integer_part_with_commas


# 测试
test_cases = ["1294512.12412", "0000123456789.99", "987654321"]
for s in test_cases:
    print(add_commas(s))
 
 
代码解释:
 
去除前导零:
s = s.lstrip('0')
if not s:
    return '0'
 
 
使用  lstrip('0')  方法去除字符串开头的所有零。如果去除零后字符串为空,则返回  '0' 。
分离整数部分和小数部分:
if '.' in s:
    integer_part, decimal_part = s.split('.')
else:
    integer_part, decimal_part = s, ''
 
 
判断字符串中是否有小数点。如果有,则使用  split('.')  方法将字符串分为整数部分和小数部分;如果没有,则小数部分为空字符串。
添加千分位逗号:
result = []
while integer_part:
    result.insert(0, integer_part[-3:])
    integer_part = integer_part[:-3]
integer_part_with_commas = ','.join(result)
 
 
使用循环,每次从整数部分的末尾截取3个字符,并将其插入到  result  列表的开头。循环结束后,使用  join  方法将  result  列表中的元素用逗号连接起来。
组合结果:
if decimal_part:
    return integer_part_with_commas + '.' + decimal_part
else:
    return integer_part_with_commas
 
 
如果有小数部分,则将带逗号的整数部分和小数部分用小数点连接起来返回;如果没有小数部分,则直接返回带逗号的整数部分。
测试部分:
test_cases = ["1294512.12412", "0000123456789.99", "987654321"]
for s in test_cases:
    print(add_commas(s))
 
 
定义测试用例列表,并对每个测试用例调用  add_commas  函数并打印结果。

def add_commas(s):
    # 去除前面无用的0
    s = s.lstrip('0')
    if not s:
        return '0'
    if '.' in s:
        integer_part, decimal_part = s.split('.')
    else:
        integer_part, decimal_part = s, ''
    result = []
    while integer_part:
        result.append(integer_part[-3:])
        integer_part = integer_part[:-3]
    integer_part_with_commas = ','.join(reversed(result))
    if decimal_part:
        return integer_part_with_commas + '.' + decimal_part
    else:
        return integer_part_with_commas


 
 
你可以使用以下方式调用这个函数:
 
s = "1294512.12412"
print(add_commas(s))
s = "0000123456789.99"
print(add_commas(s))
s = "987654321"
print(add_commas(s))
 
 
代码说明
 
去除前导零:使用  lstrip('0')  方法去除字符串前面无用的  0 。如果去除后字符串为空,则返回  '0' 。
分离整数部分和小数部分:检查字符串中是否包含小数点  '.' ,如果包含则使用  split('.')  方法将字符串拆分为整数部分和小数部分;如果不包含,则整数部分就是整个字符串,小数部分为空字符串。
处理整数部分添加千分位逗号:
- 使用一个循环,每次从整数部分的末尾取出 3 位,并将其添加到一个列表  result  中。
- 循环结束后,将  result  列表反转并使用  join  方法用逗号连接起来,形成带千分位逗号的整数部分。
组合结果:如果存在小数部分,则将带千分位逗号的整数部分和小数部分用小数点连接起来返回;如果不存在小数部分,则直接返回带千分位逗号的整数部分。

  • 天道酬勤

    与人方便,与己方便。

    Related Posts

    Python陪练2–二维数组

    小R正在计划一次从地点A到地点B的徒步旅行,总路程需要 N 天。为了在旅途中保持充足的能量,小R每天必须消耗1份食物。幸运的是,小R在路途中每天都会经过一个补给站,可以先购买完食物后再消耗今天的1份食物。然而,每个补给站的食物每份的价格可能不同,并且小R在购买完食物后最多只能同时携带 K 份食物。 现在,小R希望在保证每天食物消耗的前提下,以最小的花费完成这次徒步旅行。你能帮助小R计算出最低的花费是多少吗? **输入 ** n 总路程需要的天数k 小R最多能同时携带食物的份数data[i] 第i天补给站每份食物的价格**输出 ** 返回完成这次徒步旅行的最小花费**约束条件 ** 1 < n,k < 10001 < data[i] < 10000测试样例样例1: 输入:n = 5 ,k = 2…

    Python–pandas库进行数据处理的实例

    以下是一个使用 Python `pandas` 库进行数据处理的实例,涵盖常见操作如数据读取、清洗、筛选、聚合等。 — ### 示例场景假设我们有一个销售数据集 `sales_data.csv`,包含以下字段:– `OrderID` (订单ID)– `Product` (产品名称)– `Quantity` (购买数量)– `Price` (单价)– `OrderDate` (订单日期)– `CustomerID` (客户ID) 目标:分析销售数据,找出最畅销的产品和客户消费行为。 — ### 1. 导入库并读取数据“`pythonimport pandas as pd # 读取…

    You Missed

    四大顶尖AI模型

    线上数字人体验地址

    DeepSeek在线使用平台汇总

    AI工具集

    分享目前最全AI工具合集

    python练习3