我什至不确定这个错误到底是什么问题。任何信息都会非常有帮助。
到目前为止我所拥有的:
def equations(specie,elements):
vectors=[]
for x in specie:
vector=extracting_columns(x,elements)
vectors.append(vector)
当我运行时:
equations(['OH', 'CO2','c3o3','H2O3','CO','C3H1'],
['H', 'C', 'O'])
我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
文件“_sage_input_77.py”,第 10 行,在 exec compile(u'print support .syseval(python, u"equations([\'OH\', \'CO2\',\'c3o3\',\'H2O3\ ',\'CO\',\'C3H1\'], unel)", SAGE_TMP_DIR ) 文件“”,第 1 行,在
syseval 中的文件“/sagenb/sage_install/sage-5.4-sage.math.washington.edu-x86_64-Linux/devel/sageb-git/sageb/misc/support.py”,第 479 行,返回 system.eval(cmd, sage_globals, locals = sage_globals) 文件“/sageb/sage_install/sage-5.4-sage.math.washington.edu-x86_64-Linux/local/lib/python2.7/site-packages/sage/misc/python.py”,第 56 行,在 eval eval(z, globals) 文件 "",第 1 行,在
文件“”,第 4 行,在方程式中
文件“”,第 3 行,在 extracting_columns
ValueError:需要超过 1 个值才能解压
如果需要,我以前的函数: import re def parse_formula(formula): '''给定一个简单的化学公式,返回一个(元素,多重性)元组列表。
Example:
'H2SO4' --> [('H', 2.0), ('S', 1.0), ('O', 4.0)]
'''
return [ (elem, float(mul) if mul else 1.) for (elem, mul) in re.findall(r'([A-Z][a-z]*)(\d*)', formula) ]
def unique_element(group): c=[] for element in group: piece=parse_formula(element) for x in piece: c.append(x[0])
return list(set(c))
def extracting_columns(specie, elements): species_vector=zeros(len(elements)) for (el,mul) in specie: species_vector[elements.index(el)]=mul
return species_vector