代码解释: if Tempstr[-1] in ['F','f']: 是用来判定所输入的温度值的最后一位字符串是否是F或f,如果是,则运行 C = (eval(TempStr[0:-1]) - 32) / 1.8 ,计算出转化后的温度(摄氏度); 如果不是,则跳到 elif TempStr[-1] in ['C', 'c']: ,判定所输入的温度值的最后一位字符串是否是C或c,如果是的话则运行 F = 1.8 * eval(TempStr[0:-1]) + 32 ,计算出转化后的温度(华氏度); 否则,输出“输入格式错误”
# e1.1TempConvert.py
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("输入格式错误")
输出结果:
1.请输入带有符号的温度值:12c
转化后的温度是53.60F
2。请输入带有符号的温度值:12f
转化后的温度是-11.11C
附1.:eval是Python的一个内置函数,作用是返回传入字符串的表达式的结果。简而言之,就是将字符串当成有效的表达式 来求值并返回计算结果。eval函数就是实现list、dict、tuple与str之间的转化,同样str函数把list,dict,tuple转为为字符串。
附2.:{:.2f}是保留小数点后两位
编程强化(与异常处理:try-except语句联用)
通过上面的程序的运行:如细心一点的话就会发现,如果输入的带有符号的温度值符号正确,但是温度值前添加其他非数字的字符串就会导致程序报错,使得程序无法运行
如下:
请输入带有符号的温度值:x12f
Traceback (most recent call last):
File "D:\", line 4, in <module>
C = (eval(TempStr[0:-1]) - 32) / 1.8
File "<string>", line 1, in <module>
NameError: name 'x12' is not defined
为了使程序完整的运行下去,可以使用try-except语句:
try:
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("输入格式错误,请输入带有符号且符号正确的温度值!")
except NameError:
print("输入错误,请输入的带有符号的温度值前不要添加其他非数字的字符串!!")
输出结果:
1.请输入带有符号的温度值:112f
转化后的温度是44.44C
2.请输入带有符号的温度值:12d
输入格式错误
3.请输入带有符号的温度值:a13f
输入错误,请输入的带有符号的温度值前不要添加其他非数字的字符串!!
————初次写博客,如有错误和不足,欢迎大家指出。