温度转换器
入门约 10 分钟
你将构建什么
一个温度转换器:用户输入温度值和源单位,选择目标单位,程序输出转换结果。支持摄氏度(C)、华氏度(F)、开尔文(K)之间的互转。
学习目标
- 用函数封装每种转换公式
- 理解温度单位之间的换算关系
- 用 input 读取用户输入并格式化输出
- 练习条件判断选择对应公式
前置要求
- 了解 Python 函数定义
- 了解基本的数学运算
- 已完成“猜数字游戏”项目或具备同等基础
步骤
- 1
定义转换函数
以摄氏度为基准,定义函数把任意单位转为摄氏度,再从摄氏度转为目标单位。公式:F = C * 9/5 + 32,K = C + 273.15。
代码def to_celsius(value, unit): if unit == 'C': return value elif unit == 'F': return (value - 32) * 5 / 9 elif unit == 'K': return value - 273.15 def from_celsius(celsius, unit): if unit == 'C': return celsius elif unit == 'F': return celsius * 9 / 5 + 32 elif unit == 'K': return celsius + 273.15预期结果
调用 to_celsius(100, 'C') 返回 100,to_celsius(212, 'F') 返回 100。
提示
用基准单位做中转,n 个单位只需 2n 个函数而非 n² 个。
- 2
读取用户输入
提示用户输入温度值、源单位、目标单位。用 float() 把输入转为浮点数。
代码value = float(input("请输入温度值:")) from_unit = input("请输入源单位 (C/F/K):").upper() to_unit = input("请输入目标单位 (C/F/K):").upper()预期结果
程序读取三个输入:数值和两个单位字母。
提示
upper() 把输入转为大写,这样用户输入 c 或 C 都能正确处理。
- 3
计算并输出结果
调用转换函数,先转成摄氏度再转为目标单位。用 f-string 格式化输出,保留两位小数。
代码celsius = to_celsius(value, from_unit) result = from_celsius(celsius, to_unit) print(f"{value}°{from_unit} = {result:.2f}°{to_unit}")预期结果
输入 100、C、F 输出“100.0°C = 212.00°F”。
提示
f"{result:.2f}" 保留两位小数,和 toFixed(2) 类似。
- 4
添加单位校验
检查输入的单位是否是 C/F/K 之一,不是则提示错误退出。避免无效单位导致函数返回 None。
代码valid_units = {'C', 'F', 'K'} if from_unit not in valid_units or to_unit not in valid_units: print("错误:单位必须是 C、F 或 K") exit() # 然后执行转换逻辑预期结果
输入无效单位时提示错误并退出,有效单位正常转换。
提示
用集合 {C, F, K} 和 in 运算符检查成员关系,比多个 or 条件更简洁。
自己动手试试
起始代码
# TODO: 定义 to_celsius 和 from_celsius 函数
# 然后读取用户输入并输出转换结果
解决方案代码
def to_celsius(value, unit):
if unit == 'C':
return value
elif unit == 'F':
return (value - 32) * 5 / 9
elif unit == 'K':
return value - 273.15
def from_celsius(celsius, unit):
if unit == 'C':
return celsius
elif unit == 'F':
return celsius * 9 / 5 + 32
elif unit == 'K':
return celsius + 273.15
valid_units = {'C', 'F', 'K'}
value = float(input("请输入温度值:"))
from_unit = input("请输入源单位 (C/F/K):").upper()
to_unit = input("请输入目标单位 (C/F/K):").upper()
if from_unit not in valid_units or to_unit not in valid_units:
print("错误:单位必须是 C、F 或 K")
exit()
celsius = to_celsius(value, from_unit)
result = from_celsius(celsius, to_unit)
print(f"{value}°{from_unit} = {result:.2f}°{to_unit}")你学到了什么
你学会了用函数封装转换公式、用基准单位做中转——这是处理多对多转换的通用技巧。Python 的函数定义简洁明了,非常适合这类计算密集型任务。
相关资源
相关术语
新手友好的术语表用大白话解释编程术语——变量、函数、DOM、Promise 等等。
相关错误
用大白话解释常见错误——什么意思、为什么发生、如何修复。