我想把0.0到39.9之间的浮点数转换成一个字符串。如果十位数分别是1、2或3,则将其替换为L、T或Y如果它在一个里面,就加上一个M。例如,22.3将返回t2.3,8.1将返回m8.1,依此类推。否则,返回浮动。
这段代码当然可以工作,但我想知道是否有一个更简单的(如果不是一行代码的话)解决方案。代码如下:
def specType(SpT):
if 0 <= SpT <= 9.9:
return 'M{}'.format(SpT)
elif 10.0 <= SpT <= 19.9:
return 'L{}'.format(SpT - 10)
elif 20.0 <= SpT <= 29.9:
return 'T{}'.format(SpT - 20)
elif 30.0 <= SpT <= 39.9:
return 'Y{}'.format(SpT - 30)
else:
return SpT
谢谢!
最佳答案
怎么样:
def specType(SpT):
return '{}{}'.format('MLTY'[int(SpT//10)], SpT % 10) if 0.0 <= SpT <= 39.9 else SpT
它给予
>>> specType(0.0)
'M0.0'
>>> specType(8.1)
'M8.1'
>>> specType(14.5)
'L4.5'
>>> specType(22.3)
'T2.3'
>>> specType(34.7)
'Y4.7'
[如评论中所述,您将需要考虑如何处理数字,这些数字可能会悄悄地穿过您的边界--我做了一个猜测;请根据需要进行修改。]