电子秤单位换算逻辑实现
下面是一个完整的电子秤单位换算实现,支持克(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
感谢使用电子秤单位换算器!
这个实现考虑了电子秤实际应用中的精度要求,使用了国际标准的换算系数,并通过测试用例验证了转换的准确性。