2012-01-17 36 views
0

赋值我现在有一些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 ] 

的列(括号读数LR): F1ISO,F0ISO,F1COR,F0COR

我想要做什么,输入'姓名'(姓名是数字和字母的组合,并始终以形式:11111A为例,可以有两个字母在结束)。

我希望能够在“名字”拆分为字母和数字,但更重要的是我在看的前3个数字和字母。用这三个数字我希望能够从上面的'表'中读取,但是所选择的值也取决于字母。

主要规则是: 如果信等于V然后采取的“ISO”值。 任何其他组合都采用'COR'值。

谢谢任何​​能够帮助的人。

+1

这是一个代码速度竞赛?你尝试了什么? – joaquin 2012-01-17 15:30:47

+0

不,我只是想根据名称输入分配正确的f0和f1对。 – user2063 2012-01-17 15:31:58

+1

我明白了,我想问你的是,如果你尝试使用if/else或类似的东西来切分文本条目。想知道你被阻止的地方,以便更好地帮助你。 – joaquin 2012-01-17 15:35:43

回答

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:] 
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] 
相关问题