我目前在Python中有一些代码,我从表中输入了值:
rules = { "213" : ( 0.00019, 3.5, 0.00019, 3.5 ),
"222" : ( 0.00019, 4.0, 0.00019, min( 4.0, 4.1E-8 * dm**3 - 4.1E-5 * dm**2 + 0.017 * dm + 1.35 ) ),
"223" : ( 0.0003, 4.5, 0.0003, 4.5 ),
"230" : ( 0.00017, 4.5, 0.00017, 3.3 ),
"231" : ( 0.00027, 5.5, 0.00027, 5.1E-6 * dm**2 - 0.0057 * dm + 4.6 ),
"232" : ( 0.00036, 6.0, 0.00036, 7.1E-6 * dm**2 - 0.007 * dm + 5.79 ),
"239" : ( 0.00017, 4.5, 0.00017, 2.9 ),
"240" : ( 0.00027, 6.5, 0.00027, 9.1E-6 * dm**2 - 0.01 * dm + 6.9 ),
"241" : ( 0.00049, 7.0, 0.00049, 3.1E-5 * dm**2 - 0.032 * dm + 8.7 ) }
serialNumber = [ "name" ][ 0 : 3 ]
try:
return rules[ serialNumber ]
列(括号中L-R的读数):F1ISO,F0ISO,F1COR,F0COR
我想做什么,输入'name'(名称是数字和字母的组合,总是以形式:11111A,例如,最后可以有两个字母)。
我希望能够将'name'分成字母和数字,但更重要的是我正在查看前3个数字和字母。使用前三个数字,我希望能够从上面的“表格”中读取,但所选择的值也取决于字母。
主要规则是: 如果字母等于V,则采用'ISO'值。 任何其他组合都采用'COR'值。
感谢任何能提供帮助的人。
答案 0 :(得分:2)
这有助于了解如何从条目中获取这两部分
>>> name = "11111A"
>>> ser = name[:3] # first 3 characters
>>> code = name[3:] # rest of chars after the third
>>> ser
'111'
>>> code
'11A'
>>>
或者也许:
>>> code = name[-1] # last character
>>> code
'A'
然后,以同样的方式:
>>> contents = rules[ser]
>>> if code == 'V':
... print contents[:2]
... else:
... print contents[2:]
答案 1 :(得分:0)
我认为这可以满足您的需求:
name = "21311A"
serialNumber = name[:3] # get first 3 numbers
rule = rules.get(serialNumber) # get rule based on serialNumber
column = [3,1][name[5] == 'V'] # pick column based on last letter
column -= int(name[4]) # shift column based on preceding digit
print rule[x]