本篇以温度转换问题为例,介绍程序设计的基本方法,并给出Python语言的集体实现。这里我会以书上的实例为例,先写出自己对题目的思考和想法,再分析书上给出的标准代码。
实例1:
温度的刻画有两个不同体系: 摄氏度( Celsius) 和华氏度( Fabrenheit)。摄氏度以1标准大气压下水的结冰点为0度,沸点为100度, 将两个温度区间进行100等分后确定1度所代表的温度区间,进而刻画温度值。华氏度以1标准大气压下水的结冰点为32度,沸点为212度,将两个温度区间进行180等分后定义为1度区间。华氏度的1度比摄氏度的1度所对应温度区间更小, 所以华氏度体系更为细致。由于历史原因,不同国家可能采用不同的温度表示方法,例如,中国采用摄氏度,美国采用华氏度。 如何计算机程序辅助旅行者进行温度转换?
我的思路
摄氏度中0-100等价于华氏度中32-212,所以摄氏度中的每格长度=1.8倍的华氏度中的每格长度。通过输入判断到底是摄氏度转华氏度还是华氏度转摄氏度,再输入带转化的数值,输出转化后的数值(均为浮点数)。
代码如下:
#实例1:温度转化
#摄氏度0-100;华氏度32-212
print("输入0表示摄氏度转华氏度,输入1表示华氏度转摄氏度")
x = int(input())
if x==0:
print("输入摄氏度:")
Cels =float(input())
#cels = eval(input())
Fabre = Cels*1.8+32
print("输出华氏度:",Fabre)
elif x==1:
print("输入华氏度:")
Fabre =float(input())
Cels = (Fabre-32)/1.8
print("输出摄氏度:",Cels)
else:
print("输入错误!")
PS:这里的input()函数接受的是字符类型,所以应对输入的字符进行浮点数处理,可以用float()或者eval()。
参考代码
TempStr = input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
Cels = (eval(TempStr[0:-1])-32)/1.8
print("转化后的温度是{:.2f}C".format(Cels))
elif TempStr[-1] in ['C','c']:
Fabre = eval(TempStr[0:-1])*1.8+32
print("转化后的温度是{:.2f}F".format(Fabre))
else:
print("输入错误")
这里我稍微修改了下,把代表摄氏度的C和华氏度的F分别用Cels和Fabre代替了,防止和输出引号中的单位F/C搞混。
if TempStr[-1] in ['F','f']:判断输入的字符串的最后一个是不是在F和f中的一个(输入的是不是华氏度)。
Cels = (eval(TempStr[0:-1])-32)/1.8 和 Fabre = eval(TempStr[0:-1])*1.8+32则是两个温度之间的数值转化。
print("转化后的温度是{:.2f}C".format(Cels)) :{:.2f}
的意思是:将数值格式化为一个浮点数,保留两位小数。{ }是格式化的占位符,用来指示字符串中将被替换的部分。冒号后面跟随的是格式规范,它告诉Python如何格式化这个值。.2f表示保留2位小数的浮点数。