上机实验1——温度转换与输入输出强化
知识点:input()/print()、分支语句、字符串处理(教材2.1-2.2)
实验任务:
- 实现摄氏温度与华氏温度互转(保留两位小数)
- 扩展功能:输入错误处理(如非数字输入提示重新输入)
- 扩展:支持开尔文温度的三向转换
实现思路:
- 循环问答
- 不断问:"输入温度(如32C/98F/300K)"
- 输入
q直接退出程序
- 三大检查
- 查结尾:必须C/F/K(不分大小写)
- 查数字:前面的内容要能转成数字
- 查科学:开尔文温度不能小于0(绝对零度)
- 自动换算
- 根据输入的字母自动计算另外两种温度
- 例如输入
100C→ 算华氏和开尔文 - 所有结果保留两位小数
完整代码:
while True:
temp_input = input("\n请输入温度(示例:32C/98.6F/300K,输入q退出): ").strip()
# 退出检测
if temp_input.lower() == 'q':
print("程序已退出。")
break
# 空输入检测
if not temp_input:
print("错误:输入不能为空")
continue
# 单位检测
unit = temp_input[-1].upper()
if unit not in ('C', 'F', 'K'):
print("错误:必须以C/F/K结尾")
continue
# 数值转换
try:
value = float(temp_input[:-1])
except ValueError:
print("错误:温度值必须是数字")
continue
# 温度转换核心逻辑
try:
if unit == 'C':
f = value * 9 / 5 + 32
k = value + 273.15
print(f"转换结果:{value:.2f}°C = {f:.2f}°F,{k:.2f}K")
elif unit == 'F':
c = (value - 32) * 5 / 9
k = c + 273.15
print(f"转换结果:{value:.2f}°F = {c:.2f}°C,{k:.2f}K")
elif unit == 'K':
if value < 0:
print("警告:开尔文温度不能小于绝对零度(0K)")
continue
c = value - 273.15
f = c * 9 / 5 + 32
print(f"转换结果:{value:.2f}K = {c:.2f}°C,{f:.2f}°F")
except Exception as e:
print(f"转换错误:{str(e)}")
运行示例截图:


浙公网安备 33010602011771号