gpt4 book ai didi

python - 解压时出现超过 1 个值的错误

转载 作者:行者123 更新时间:2023-12-01 05:52:00 25 4
gpt4 key购买 nike

我什至不确定这个错误到底是什么问题。任何信息都会非常有帮助。

到目前为止我所拥有的:

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 行,位于 execcompile(u'print support.syseval(python, u"equations([\'OH\',\'CO2\',\'c3o3\',\'H2O3\',\' CO\',\'C3H1\'], unel)", SAGE_TMP_DIR) 文件“”,第 1 行,位于

文件“/sagenb/sage_install/sage-5.4-sage.math.washington.edu-x86_64-Linux/devel/sagenb-git/sagenb/misc/support.py”,第 479 行,在 syseval 中 返回 system.eval(cmd, sage_globals, locals = sage_globals) 文件“/sagenb/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, 全局变量) 文件“”,第 1 行,位于

文件“”,第 4 行,方程

文件“”,第 3 行,extracting_columns

ValueError:需要超过 1 个值才能解压

如果需要的话我以前的功能:进口重新def parse_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(组): c=[] 对于组中的元素: 片=parse_formula(元素) 对于 x block : c.append(x[0])

return list(set(c))

def extracting_columns(物种,元素): 物种向量=零(len(元素)) 对于 (el,mul) 实物: species_vector[elements.index(el)]=mul

return species_vector

最佳答案

问题是您使用 'OH' 这样的字符串作为第一个参数来调用 extracting_columns ,因此当您尝试执行 for (el ,mul) 实物: 它试图将 'O' 解压为 (el, mul)

调试此问题的一个简单方法是在有问题的行之前插入 print:

def extracting_columns(specie, elements):
species_vector=zeros(len(elements))
print(specie)
for (el,mul) in specie:
species_vector[elements.index(el)]=mul
return species_vector

那么,extracting_columns 是如何获取'OH' 的?好吧,让我们看看它的调用位置,还有几个 print:

def equations(specie,elements):
vectors=[]
print(specie)
for x in specie:
print(x)
vector=extracting_columns(x,elements)
vectors.append(vector)

现在,当您运行它时,您会看到 specie['OH', 'CO2', 'c3o3', 'H2O3', 'CO', 'C3H1 '],所以它的第一个元素显然是'OH'

至于如何解决这个问题......好吧,在不知道你实际想要做什么的情况下,很难告诉你如何去做。但显然,如果您想迭代 extracting_columns 的第一个参数并将每个项目视为一对,则必须向其传递一个对序列而不是字符串。

但看起来您的 parse_formula 是专门为将 'OH' 这样的字符串转换为 [('O', 1.0 ), ('H', 1.0)]。所以大概问题是你忘记在某个地方调用它。也许您希望方程看起来像这样?

def equations(specie, elements):
vectors=[]
for x in specie:
formula = parse_formula(x)
vector=extracting_columns(formula, elements)
vectors.append(vector)

这会做一些事情,没有任何异常(exception)。这是否是你真正想要的,我不知道。

无论如何,学习如何查看代码中实际发生的情况并调试琐碎的问题可能比立即获得正确的答案更重要。

关于python - 解压时出现超过 1 个值的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com