单位转换器
你将构建什么
一个单位转换器:用户选择转换类型(长度或重量),输入数值和源单位,选择目标单位,程序输出转换结果。支持米、千米、英尺、英寸以及千克、磅、盎司之间的互转。
学习目标
- 用函数封装每种单位转换公式
- 用菜单驱动用户交互流程
- 理解单位之间的换算关系和系数
- 处理用户选择分支,输出格式化结果
前置要求
- 了解函数和条件判断
- 了解基本的数学运算
- 已完成“简单计算器”项目或具备同等基础
步骤
- 1
定义长度转换函数
以米为基准单位,定义函数把任意长度单位转换为米,再从米转换到目标单位。例如:1 千米 = 1000 米,1 英尺 = 0.3048 米,1 英寸 = 0.0254 米。
代码// 以米为基准的换算系数 function toMeters(value, unit): if unit == "km": return value * 1000 if unit == "m": return value if unit == "ft": return value * 0.3048 if unit == "in": return value * 0.0254 return "未知单位" function fromMeters(meters, unit): if unit == "km": return meters / 1000 if unit == "m": return meters if unit == "ft": return meters / 0.3048 if unit == "in": return meters / 0.0254 return "未知单位"预期结果
调用 toMeters(1, “km”) 返回 1000,fromMeters(1000, “ft”) 返回约 3280.84。
提示
用基准单位做中转,避免为每对单位都写一个函数——n 个单位只需 2n 个函数而非 n² 个。
- 2
定义重量转换函数
以千克为基准,定义重量转换函数。1 磅 = 0.4536 千克,1 盎司 = 0.0283 千克。结构与长度转换完全一致。
代码function toKilograms(value, unit): if unit == "kg": return value if unit == "lb": return value * 0.4536 if unit == "oz": return value * 0.0283 return "未知单位" function fromKilograms(kg, unit): if unit == "kg": return kg if unit == "lb": return kg / 0.4536 if unit == "oz": return kg / 0.0283 return "未知单位"预期结果
调用 toKilograms(1, “lb”) 返回约 0.4536。
提示
重量和长度转换逻辑相同,只是系数不同——后续可以抽象成通用转换器。
- 3
构建用户交互菜单
显示菜单让用户选择转换类型(1=长度,2=重量),然后输入数值、源单位、目标单位。根据选择调用对应的转换函数。
代码print("单位转换器") print("1) 长度转换") print("2) 重量转换") choice = input("请选择 (1/2):") value = input("请输入数值:") fromUnit = input("请输入源单位:") toUnit = input("请输入目标单位:") if choice == "1": result = fromMeters(toMeters(value, fromUnit), toUnit) else if choice == "2": result = fromKilograms(toKilograms(value, fromUnit), toUnit) print(value + " " + fromUnit + " = " + result + " " + toUnit)预期结果
选择 1、输入 1、km、m,输出“1 km = 1000 m”。
提示
先转成基准单位,再从基准转成目标——两步走最清晰。
- 4
格式化输出并测试
把结果格式化为保留两位小数。测试几组常见转换:1 千米 → 米、1 英尺 → 英寸、1 千克 → 磅,确认结果合理。
代码// 保留两位小数 formattedResult = round(result, 2) print(value + " " + fromUnit + " = " + formattedResult + " " + toUnit)预期结果
输出整洁的两位小数结果,如“1 kg = 2.20 lb”。
提示
用 round(value, 2) 或 toFixed(2) 控制小数位数。
自己动手试试
// TODO: 实现 toMeters、fromMeters、toKilograms、fromKilograms
// 然后构建用户交互菜单,根据选择调用对应转换函数
function convert(value, fromUnit, toUnit, type) {
// TODO: 根据类型调用对应转换函数
}function toMeters(value, unit) {
if (unit === "km") return value * 1000;
if (unit === "m") return value;
if (unit === "ft") return value * 0.3048;
if (unit === "in") return value * 0.0254;
return "未知单位";
}
function fromMeters(meters, unit) {
if (unit === "km") return meters / 1000;
if (unit === "m") return meters;
if (unit === "ft") return meters / 0.3048;
if (unit === "in") return meters / 0.0254;
return "未知单位";
}
function toKilograms(value, unit) {
if (unit === "kg") return value;
if (unit === "lb") return value * 0.4536;
if (unit === "oz") return value * 0.0283;
return "未知单位";
}
function fromKilograms(kg, unit) {
if (unit === "kg") return kg;
if (unit === "lb") return kg / 0.4536;
if (unit === "oz") return kg / 0.0283;
return "未知单位";
}
// 示例:1 千米 → 米
console.log(fromMeters(toMeters(1, "km"), "m")); // 1000
// 示例:1 千克 → 磅
console.log(fromKilograms(toKilograms(1, "kg"), "lb")); // 1你学到了什么
你掌握了用基准单位做中转的转换模式——这是处理多对多关系的通用技巧。同时学会了用菜单驱动交互流程,让程序更易用。
相关资源
相关术语
新手友好的术语表用大白话解释编程术语——变量、函数、DOM、Promise 等等。
相关错误
用大白话解释常见错误——什么意思、为什么发生、如何修复。
- 类型错误
常见错误及解决方法。