首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python将整数从一个def传递到另一个def

用Python将整数从一个def传递到另一个def
EN

Stack Overflow用户
提问于 2014-09-18 23:50:37
回答 1查看 102关注 0票数 0

我试图交叉比较在compareDNA (计算汉明距离)中标有"S“的两个输出。不过,我不知道如何从一个def调用一个整数到另一个。我已经尝试返回变量,但是在返回变量后,我无法调用它(在另一个def中)。我试图看看“compareDNA(泼尼林,泼马林)”和“compareDNA(泼尼林,Hdnalin)”的输出更高,以确定哪一个有更大的汉明距离。如何将整数从一个def调用到另一个def?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-19 01:48:02

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

代码语言:javascript
复制
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语句中的条件:

代码语言:javascript
复制
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语句来处理关闭文件的操作,而不是手动关闭它们。您的当前代码实际上没有正确关闭文件(在每种情况下,您都忽略了.close后面的括号,这是使其成为函数调用所必需的)。

如果使用with语句,则将在块末尾自动关闭文件(即使有异常):

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25924238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档