cookbook 6.1 温标的转换
2024-08-29 22:35:56
任务:
在开氏温度(Kelvin)、摄氏度(Celsius)、华氏温度(Fahrenheit)、兰金温度(Rankine)之间做转换
解决方案:
#coding=utf-8
class Temperature(object):
coefficients={'c':(1.0,0.0,-273.15),'f':(1.8,-273.15,32.0),'r':(1.8,0.0,0.0)} def __init__(self,**kwargs):
try:
name,value = kwargs.popitem()
except KeyError:
name,value = 'k',0
if kwargs or name not in 'kcfr':
kwargs[name] = value
raise TypeError,'invalid arguments %r' % kwargs
setattr(self,name,float(value)) def __getattr__(self,name):
try:
eq = self.coefficients[name]
except KeyError:
raise AttributeError,name
return (self.k + eq[1]) + eq[0] + eq[2]
def __setattr__(self,name,value):
if name in self.coefficients:
eq = self.coefficients[name]
self.k = (value - eq[2]) / eq[0] - eq[1]
elif name == 'k':
object.__setattr__(self,name,value)
else:
raise AttributeError,name
def __str__(self):
return "%s K" % self.k
def __repr__(self):
return "Temperature(k=%r)" % self.k #测试
te = Temperature(f=70)
print te.c
最新文章
- sqlserver数据库标注为可疑的解决办法(转)
- oracle从零开始学习笔记 二
- Spring学习8-Spring事务管理(注解式声明事务管理)
- 数据持久层(三)ODB介绍
- JMeter学习资料
- 我和小美的撸码日记(1)之软件也需靠脸吃饭,带您做张明星脸(附后台经典框架 DEMO 下载)
- OC中文件的操作
- float存储方式编程验证
- WebSocket刨根问底(二)
- Vs2017 typescript 开发小问题
- freemarker demo
- Android IPC机制(三)使用AIDL实现跨进程方法调用
- Python 中if __name__ == '__main__': 的作用和原理
- mac新手使用
- HTML-XMLHttpRequest
- json字符串转换对象的方法1
- tail -f 实时查看日志文件 linux查看日志后100行
- rnn-nlp-单词预测
- HTML学习-2标记标签-1
- Socket通讯-Netty框架实现Java通讯