Я не уверен, правильно ли я правильно понял ваш вопрос. Как правило, вы можете создать таблицу словарей, как упомянуто @Jameson. Но для разбора выражения 4e15 без разделителей, разделяемых между символами, ваша функция будет ограничена вашим набором вариантов, представленных в вашем коде, и технически непрактична для больших масштабов, но работает для небольших (ограниченных). Итак, позвольте мне показать общие пути для достижения этой цели:
def get_vals(vals, table):
res = []
for x in vals:
res.append(table.get(x, 'error')) # Or anything instead of error for invalid inputs
return res
>>> table = {'a':'test1', 'b':'test2'}
>>> get_vals('ab', table)
['test1', 'test2', 'error', 'error']
Эта функция разбирает только один одиночный символ за вход строки, если ввести строку "15"
он будет пытаться получить значение "1"
из словаря, а затем "5"
, нет струна "15"
в целом!
С разделительным способом это будет более практичным, удобным в обслуживании и работе. Например:
def get_vals2(vals, table, delimiter = ','): # Default: split string with comma or whatever
res = []
for x in vals.split(delimiter):
res.append(table.get(x, 'error'))
return res
>>> get_vals2('1,a,15,b', table)
['error', 'test1', 'error', 'test2']
Как вы можете видеть, если вход 1 и 5, это "15"
, когда анализируется, в отличие от предыдущей версии. Другой вариант - перечислить все комбинации, которые пользователь может ввести, но какая утомительная работа! Например:
table = {'4e15': your values, 'e415': your values, '415e': your values, continuing with others as well...}
Очень сложный и вы будете писать огромный список комбинаций и не эффективен, когда дело доходит до технического обслуживания, потому что вы жестко закодированы множество комбинаций, небольшое небольшое изменение может привести к ПЕРЕУСТАНОВКАМ записывая все комбинации снова!
что вы пробовали до сих пор? .. plz опубликовать код, это поможет людям ответить !! – San