温度刻画的两种不同体系
- 摄氏度:中国等世界大多数国家使用
- 以1标准大气压下水的结冰点为0度,
- 以1标准大气压下水的沸点为100度
- 将温度进行等分刻画
- 华氏度:美国、英国等国家使用
- 以1标准大气压下水的结冰点为32度,
- 以1标准大气压下水的沸点为212度
- 将温度进行等分刻画
需求分析
两种温度体系的转换
- 摄氏度转换为华氏度
- 华氏度转换为摄氏度
问题分析
该问题中计算部分的理解和确定(输入是从哪里来的)
- 理解1:直接将温度值进行转换
- 理解2:将温度信息发布的声音或图像形式进行理解和转换
- 理解3:监控温度信息发布渠道,实时获取并转换温度值
确定方案
采用理解1
直接将温度值进行转换
- 温度数值需要标明温度体系,即摄氏度或华氏度
- 转换后也需要给出温度体系
划分边界
- 标识放在温度最后
- F表示华氏度
- C表示摄氏度
- 82F表示华氏82度
- 28C表示摄氏28度
输入输出
- 输入:带华氏或摄氏标志的温度值
- 处理:根据温度标志选择适当的温度转换算法
- 输出:带摄氏或华氏标志的温度值
算法设计
根据华氏和摄氏温度定义,利用转换公式如下:
其中, C表示摄氏温度, F表示华氏温度
实例编写
TempStr = input("hello1: ")
if TempStr[-1] in ['F', 'f']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print("hello2 {:.2f}C".format(C))
elif TempStr[-1] in ['C', 'c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("hello3 {:.2f}F".format(F))
else:
print("hello4")
TempStr = input("请输入带有符号的温度值: ")
if TempStr[-1] in ['F', 'f']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C', 'c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
temp_str = input("please input the temperature: ")
if temp_str[-1] in ['F', 'f']:
C = (eval(temp_str[0:-1]) - 32) / 1.8
print("the converted temperature: {:.2f}C".format(C))
elif temp_str[-1] in ['C', 'c']:
F = 1.8 * eval(temp_str[0:-1]) + 32
print("the converted temperature: {:.2f}F".format(F))
else:
print("typo or format error")
运行效果
请输入带有符号的温度值: 100f f100 100-0 100#%
转换后的温度是37.78C
请输入带有符号的温度值: 100c
转换后的温度是212.00F
举一反三
Python语法元素理解
- 温度转换程序共10行代码,但包含很多语法元素
- 清楚理解这10行代码能够快速入门Python语言
- 参考框架结构、逐行分析、逐词理解
输入输出的改变
- 温度数值与温度标识之间关系的设计可以改变
- 标识改变放在温度数值之前:
C82、F28
- 标识字符改变为多个字符:
82Ce、28Fa
计算问题的扩展
- 温度转换问题是各类转换问题的代表性问题
- 货币转换、长度转换、重量转换、面积转换…
- 问题不同,但程序代码相似