请问正文的py代码该怎么优化?

作者站长头像
站长
· 阅读数 7
不清楚这样的问题该怎么起标题……
from math import floor

def format_num(num):
    m = floor(num)
    cm_f = (num-m) * 100
    cm = floor(cm_f)
    mm = round((cm_f - cm) * 10, 2)
    rs = ""
    if m > 0:
        rs = f"{m} m  "
    if cm > 0:
        rs = f"{rs}{cm} cm  "
    if mm > 0:
        rs = f"{rs}{mm} mm"
    return rs

# 1 m  23 cm  4.56 mm
print(format_num(1.23456))

这是一个简单的格式化长度的方法,以米为基础单位,这是我自己写的,请问有更简洁的写法吗?谢谢

回复
1个回答
avatar
test
2024-06-25

总体来说没太多问题,有两个优化建议,你可以参考,比如说第一个,直接在计算cm和mm时进行数学运算,而不是将cm_f作为中间变量,这样的话可以节省一些步骤,第二个建议其实和第一个建议差不多,就是将结果以列表形式存储在parts列表中,提高可读性,总体来说你的代码没什么太大问题。我这段代码是在你的基础上,稍微按照刚刚我的这两个建议,修改了很小一点

def format_num(num):
    m = int(num)
    cm = int((num - m) * 100)
    mm = round((num - m - cm / 100) * 1000, 2)
    parts = []
    if m > 0:
        parts.append(f"{m} m")
    if cm > 0:
        parts.append(f"{cm} cm")
    if mm > 0:
        parts.append(f"{mm} mm")
    return "  ".join(parts)

# 1 m  23 cm  4.56 mm
print(format_num(1.23456))
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容