You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现赛马距离单位转换?

赛马距离单位转米数的Python实现

实现思路

拆解输入的距离字符串,逐一识别每个部分的数值和单位,按照给定规则(1浪=200米,1英里=1600米)计算各部分对应的米数,最后求和得到总距离。

代码实现

def convert_race_distance_to_meters(distance_str):
    total_meters = 0.0
    # 统一转为小写,兼容大小写输入
    distance_lower = distance_str.lower()
    # 按空格拆分各个距离组件
    components = distance_lower.split()
    
    for comp in components:
        # 处理英里单位
        if 'm' in comp:
            num_part = comp.replace('m', '')
            # 解析整数或分数形式的数值
            if '/' in num_part:
                numerator, denominator = num_part.split('/')
                miles = float(numerator) / float(denominator)
            else:
                miles = float(num_part)
            total_meters += miles * 1600
        # 处理浪单位
        elif 'f' in comp:
            num_part = comp.replace('f', '')
            if '/' in num_part:
                numerator, denominator = num_part.split('/')
                furlongs = float(numerator) / float(denominator)
            else:
                furlongs = float(num_part)
            total_meters += furlongs * 200
    
    # 返回整数结果(需保留小数可去掉int())
    return int(total_meters)

# 测试用例
print(convert_race_distance_to_meters('7F'))       # 输出:1400
print(convert_race_distance_to_meters('1m'))        # 输出:1600
print(convert_race_distance_to_meters('1m 1/2f'))   # 输出:1700
print(convert_race_distance_to_meters('2m 3/4f'))   # 输出:3350

代码说明

  1. 大小写兼容:将输入转为小写,不管输入是F/f、M/m都能正常处理。
  2. 组合距离拆分:用split()按空格拆分多单位组合(比如1m 1/2f拆成两个独立部分)。
  3. 分数解析:支持整数和分数形式的数值输入,比如1/2f会被解析为0.5浪,对应100米。
  4. 单位转换:英里乘以1600、浪乘以200,累加后返回整数米数(如需小数结果可移除int())。

内容的提问来源于stack exchange,提问作者Jack Pols

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:15:38