2012-01-17 12 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] 
相關問題