电子秤单位换算逻辑实现
下面是一个完整的电子秤单位换算实现,支持克(g)、千克(kg)和磅(lb)之间的相互转换。
class WeightConverter:
    # 定义单位转换常量
    GRAMS_PER_KILOGRAM = 1000.0
    GRAMS_PER_POUND = 453.59237  # 精确转换系数
    @staticmethod
    def convert(value, from_unit, to_unit):
        """
        执行重量单位转换
        参数:
        value -- 要转换的数值
        from_unit -- 原始单位 ('g', 'kg', 'lb')
        to_unit -- 目标单位 ('g', 'kg', 'lb')
        返回:
        转换后的数值
        """
        # 统一单位格式为小写
        from_unit = from_unit.lower()
        to_unit = to_unit.lower()
        # 定义支持的重量单位
        valid_units = ['g', 'kg', 'lb']
        if from_unit not in valid_units or to_unit not in valid_units:
            raise ValueError(f"无效的单位。支持的格式: {valid_units}")
        # 如果源单位和目标单位相同,直接返回值
        if from_unit == to_unit:
            return value
        # 转换为克作为中间单位
        if from_unit == 'g':
            grams = value
        elif from_unit == 'kg':
            grams = value * WeightConverter.GRAMS_PER_KILOGRAM
        elif from_unit == 'lb':
            grams = value * WeightConverter.GRAMS_PER_POUND
        # 从克转换为目标单位
        if to_unit == 'g':
            return grams
        elif to_unit == 'kg':
            return grams / WeightConverter.GRAMS_PER_KILOGRAM
        elif to_unit == 'lb':
            return grams / WeightConverter.GRAMS_PER_POUND
# 测试函数
def test_weight_converter():
    # 测试用例
    test_cases = [
        (1000, 'g', 'kg', 1.0),
        (1, 'kg', 'g', 1000.0),
        (1, 'kg', 'lb', 2.20462),
        (1, 'lb', 'g', 453.59237),
        (500, 'g', 'lb', 1.10231),
        (2.20462, 'lb', 'kg', 1.0),
        (1000, 'g', 'g', 1000.0),
    ]
    print("测试结果:")
    print("{:<10} {:<5} -> {:<5} | {:<10} | {:<10} | {:<10}".format(
        "数值", "从", "到", "预期", "实际", "状态"))
    for value, from_unit, to_unit, expected in test_cases:
        try:
            result = WeightConverter.convert(value, from_unit, to_unit)
            # 四舍五入到5位小数进行比较
            passed = abs(round(result, 5) - round(expected, 5)) < 0.00001
            status = "通过" if passed else "失败"
            print("{:<10.5f} {:<5} -> {:<5} | {:<10.5f} | {:<10.5f} | {:<10}".format(
                value, from_unit, to_unit, expected, result, status))
        except Exception as e:
            print(f"测试失败: {e}")
# 用户交互示例
if __name__ == "__main__":
    print("电子秤单位换算器")
    print("支持单位: g(克), kg(千克), lb(磅)")
    while True:
        try:
            value = float(input("\n输入重量值: "))
            from_unit = input("输入原始单位 (g/kg/lb): ").strip().lower()
            to_unit = input("输入目标单位 (g/kg/lb): ").strip().lower()
            result = WeightConverter.convert(value, from_unit, to_unit)
            print(f"\n转换结果: {value} {from_unit} = {result:.6f} {to_unit}")
        except ValueError as ve:
            print(f"输入错误: {ve}")
        except Exception as e:
            print(f"发生错误: {e}")
        # 询问用户是否继续
        another = input("\n是否继续转换? (y/n): ").lower()
        if another != 'y':
            print("感谢使用电子秤单位换算器!")
            break
单位换算逻辑说明
转换关系:
- 1 千克(kg) = 1000 克(g)
 
- 1 磅(lb) = 453.59237 克(g) (国际标准换算系数)
 
转换方法:
- 使用克(g)作为中间基准单位
 
- 先将原始单位转换为克
 
- 再将克转换为目标单位
 
转换公式:
- g → kg: kg = g / 1000
 
- g → lb: lb = g / 453.59237
 
- kg → g: g = kg * 1000
 
- kg → lb: lb = (kg * 1000) / 453.59237
 
- lb → g: g = lb * 453.59237
 
- lb → kg: kg = (lb * 453.59237) / 1000
 
功能特点
支持三种重量单位:克(g)、千克(kg)、磅(lb)
使用国际标准换算系数(1磅 = 453.59237克)
包含自动测试用例验证转换准确性
提供用户友好的交互界面
异常处理机制确保程序健壮性
单位不区分大小写
使用示例
电子秤单位换算器
支持单位: g(克), kg(千克), lb(磅)
输入重量值: 500
输入原始单位 (g/kg/lb): g
输入目标单位 (g/kg/lb): lb
转换结果: 500 g = 1.102311 lb
是否继续转换? (y/n): n
感谢使用电子秤单位换算器!
这个实现考虑了电子秤实际应用中的精度要求,使用了国际标准的换算系数,并通过测试用例验证了转换的准确性。