Разделение букв и цифр для выяснения и присвоения значения в таблице - PullRequest
0 голосов
/ 17 января 2012

В настоящее время у меня есть некоторый код в 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

То, что я хотел бы сделать, с вводом 'name' (имя представляет собой комбинацию цифр и букв и всегда в форме: например, 11111A, в конце может быть две буквы).

Я хочу иметь возможность разбить «имя» на буквы и цифры, но что более важно, я смотрю на первые 3 цифры и буквы.С этими первыми тремя числами я хочу иметь возможность читать из «таблицы» выше, но выбранные значения также зависят от буквы.

Основные правила таковы: если буква равна V, тогда«ISO» значения принимаются.Любая другая комбинация принимает значения «COR».

Спасибо всем, кто может помочь.

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Это может быть полезно, чтобы понять, как получить две части из вашей записи

>>> 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 голосов
/ 17 января 2012

Я думаю, что это то, что вы хотите:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...