python错误:在assignmen之前引用了局部变量“a”

2024-09-30 20:36:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个带有交互输入的函数,告诉你脂肪酸(化学化合物)的“微笑”公式是什么,但我一直得到这个错误:

def fatty_gen(chain_length, db_position, db_orientation):
    "Returns the SMILES code of the fatty acid, given its chain length, db position, db orientation"
    chain_length=input("What is the chain length/number of C?")
    chain_length2=int(chain_length)
    db_position = input("On which carbon does the double bond first appear")
    db_position2=int(db_position)
    db_orientation= input("What is the orientation of the double bond")
    db_orientation2=str(db_orientation)

    if db_orientation2 =="Z":
        a="/C=C\\"
    elif db_orientation2=="E":
        a="\C=C\\"
    else: a =""

    return "C"*((db_position2)-1) + a + "C"*(chain_length2-db_position2-1)


<ipython-input-2-20b88ae22368> in fatty_gen(chain_length, db_position, db_orientation)
     13         a="\C=C\\"
     14 
---> 15     return "C"*((db_position2)-1) + a + "C"*(chain_length2-db_position2-1)
     16 fatty_gen(1,1,1)

UnboundLocalError: local variable 'a' referenced before assignment

UnboundLocalError:赋值之前引用了局部变量“a”


Tags: ofthechaininputdbispositionwhat
2条回答

如果db_orientation2既不是"Z",也不是"E"a变量。在

您需要像这样添加else子句:

if db_orientation2 == "Z":
    a = "/C=C\\"
elif db_orientation2 == "E":
    a = "\C=C\\"
else:
    a = "something else"
if db_orientation2 =="Z":
    a="/C=C\\"
elif db_orientation2=="E":
    a="\C=C\\"
elif db_orientation2=="":
    a="/C=C\\"
else: a=""

有人知道为什么反斜杠出现两次,尽管它应该被理解为一个反斜杠?在

相关问题 更多 >