在Python中将整数从一个def传递到另一个def

在Python中将整数从一个def传递到另一个def,python,integer,int,move,function,Python,Integer,Int,Move,Function,我试图交叉比较两个在compareDNA中标记为S的输出,计算汉明距离。但是,我不知道如何将整数从一个def调用到另一个def。我已经尝试返回变量,但是,在返回变量后,我无法在不同的def中调用它。 我试图查看compareDNAUdnalin,Mdnalin和compareDNAUdnalin,Hdnalin的哪个输出更高,以确定哪个具有更大的汉明距离。 如何从一个def调用一个整数到另一个def import sys def main(): var() def var():

我试图交叉比较两个在compareDNA中标记为S的输出,计算汉明距离。但是,我不知道如何将整数从一个def调用到另一个def。我已经尝试返回变量,但是,在返回变量后,我无法在不同的def中调用它。 我试图查看compareDNAUdnalin,Mdnalin和compareDNAUdnalin,Hdnalin的哪个输出更高,以确定哪个具有更大的汉明距离。 如何从一个def调用一个整数到另一个def

import sys
def main():
    var()

def var():
    Mdna = open("mouseDNA.txt", "r")
    Mdnalin = Mdna.readline()

    print(Mdnalin)
    Mdna.close

    Hdna = open("humanDNA.txt", "r")
    Hdnalin = Hdna.readline()
    print(Hdnalin)
    Hdna.close

    Udna = open("unknownDNA.txt", "r")
    Udnalin = Udna.readline()
    print(Udnalin)
    Udna.close
    S = 0
    S1 = 0
    S2 = 0
    print("Udnalin + Mdnalin")
    compareDNA(Udnalin, Mdnalin)
    S1 = S
    print("Udnalin + Hdnalin")
    compareDNA(Udnalin, Hdnalin)



def compareDNA(i, j):
    diffs = 0
    length = len(i)
    for x in range(length):
        if i[x] != j[x]:
            diffs += 1
    S = length - diffs / length
    S = round(S, 2)
    return S


    #   print("Mouse")

    #   print("Human")

    #   print("RATMA- *cough* undetermined")

main()

您可能希望将每次调用compareDNA返回的值分配给var函数中的一个单独变量。然后你可以用这些值做任何你想做的事情。你的问题并不清楚你到底想做什么。试着这样做:

S1 = compareDNA(Udnalin, Mdnalin)  # bind the return value from this call to S1
S2 = compareDNA(Udnalin, Hdnalin)  # and this one to S2

# do something with S1 and S2 here!
如果您想做的事情特别简单,例如比较它们以确定哪个更大,您甚至可以直接在表达式中使用返回值,例如If语句中的条件:

if compareDNA(Udnalin, Mdnalin) >  S2 = compareDNA(Udnalin, Hdnalin):
    print("Unknown DNA is closer to a Mouse")
else:
    print("Unknown DNA is closer to a Human")
还有一件事我想指出,这与你问题的核心无关:你应该使用with语句来关闭你的文件,而不是手动关闭它们。您当前的代码实际上没有正确地关闭文件,您缺少后面的括号。请在每种情况下关闭使其成为函数调用所需的括号

如果改用with语句,即使出现异常,文件也会在块末尾自动关闭:

with open("mouseDNA.txt", "r") as Mdna:
    Mdnalin = Mdna.readline()

print(Mdnalin)

with open("humanDNA.txt", "r") as Hdna:
    Hdnalin = Hdna.readline()

print(Hdnalin)

with open("unknownDNA.txt", "r") as Udna:
    Udnalin = Udna.readline()

print(Udnalin)