Python 如何询问用户';输入使代码具有交互性

Python 如何询问用户';输入使代码具有交互性,python,python-2.7,Python,Python 2.7,我创建了以下代码: gene = open("AY365046.1.txt","r") g=0; a=0; c=0; t=0; gene.readline() for line in gene: line = line.lower() for char in line: if char == "g": g+=1 if char == "a": a+=1 if char == "c

我创建了以下代码:

gene = open("AY365046.1.txt","r")

g=0;
a=0;
c=0;
t=0;

gene.readline()

for line in gene:
    line = line.lower()
    for char in line:
        if char == "g":
            g+=1
        if char == "a":
            a+=1
        if char == "c":
            c+=1
        if char == "t":
            t+=1

print "Guanina: " + str(g)
print "Adenina: " + str(a)
print "Citosina: " + str(c)
print "Timina: " + str(t)

gc = (g+c+0.) / (a+t+c+g+0.)

print "Conteúdo GC: " +str(gc)
现在我想让它互动。。。我的目标是使用input()函数获取“序列号”,它将显示相应的数据

在上面的代码中,它只获取一个序列/文件(AY365046.1.txt)的数据。。。因此,我需要代码来访问更多文件(例如,sequence1.txtsequence2.txt)。。。然后,在输入()函数通知的序列/文件上获取gact的数据

例如:

1) 系统询问序列号

2) 用户类型sequence2

3) 系统从sequence2.txt获取数据

4) 变量gact从该文件中获取数据

5) 如果序列不存在,请打印错误

据我所知,要做到这一切,我只需要声明变量,为每个变量分配.txt文件,并生成if/else

问题是,我已经尝试了所有我能找到的,但没有任何效果


显然,我不是在要求为我编写代码,但是。。。你们能告诉我从哪里开始吗?我需要做什么的逻辑是正确的?我遗漏了什么?

我在代码中看到的问题是,您只读取了文本文件中的一行。下面的代码将返回整个文档的列表,这样您就可以像代码的其他部分那样迭代

with open("AY365046.1.txt","r") as f:
   lines = f.readlines()

您可以在

中阅读有关文件对象的更多信息。我在代码中看到的问题是,您只能从文本文件中读取一行。下面的代码将返回整个文档的列表,这样您就可以像代码的其他部分那样迭代

with open("AY365046.1.txt","r") as f:
   lines = f.readlines()
您可以在

中阅读有关文件对象的更多信息。我想您需要:

import os

id = raw_input('please enter the file numbers id:')
file='AY{0}1.txt'.format(id)

if not os.path.exists(file):
    print "Error the file doesn't exists"
else:
    g,a,c,t=0,0,0,0
    with open(file,'r') as f:
        next(f)
        for line in f:
            for char in line.lower():
                if char == 'g':
                    g+=1
                if char == 'a':
                    a+=1
                if char == 'c':
                    c+=1
                if char == 't':
                    t+=1

    print "Guanina: {0}".format(g)
    print "Adenina: {0}".format(a)
    print "Citosina: {0}".format(c)
    print "Timina: {0}".format(t)

    gc = (g+c+0.) / (a+t+c+g+0.)

    print "Conteúdo GC: {0}".format(gc)
但我认为您应该解释代码的预期行为,因为它并不十分清楚。

我认为您希望这样:

import os

id = raw_input('please enter the file numbers id:')
file='AY{0}1.txt'.format(id)

if not os.path.exists(file):
    print "Error the file doesn't exists"
else:
    g,a,c,t=0,0,0,0
    with open(file,'r') as f:
        next(f)
        for line in f:
            for char in line.lower():
                if char == 'g':
                    g+=1
                if char == 'a':
                    a+=1
                if char == 'c':
                    c+=1
                if char == 't':
                    t+=1

    print "Guanina: {0}".format(g)
    print "Adenina: {0}".format(a)
    print "Citosina: {0}".format(c)
    print "Timina: {0}".format(t)

    gc = (g+c+0.) / (a+t+c+g+0.)

    print "Conteúdo GC: {0}".format(gc)


但是我认为您应该解释代码的预期行为,因为它不是很清楚。

我看到您没有关闭文件。您应该在代码的某些部分使用gene.close()。或者将open(“AY365046.1.txt”、“r”)用作f:…而不是
输入
,您可以使用
sys.argv
在命令行中输入文件名。看见另外,您不需要使用
gene.readline()
。您观察到了什么行为?您期望看到什么行为?您似乎跳过了文件中的第一行(由于
gene.readline()
表达式)。。。我从NCBI数据库得到文件,第一行没用。。。实际数据低于此值,因此…可以使用
guanina=line.count('g')
cytosina=line.count('c')
,然后除以
len(line)/(guanina+cytosina)
。我知道你只是个初学者,但少就是多!我看到你没有关闭你的文件。您应该在代码的某些部分使用gene.close()。或者将open(“AY365046.1.txt”、“r”)用作f:…而不是
输入
,您可以使用
sys.argv
在命令行中输入文件名。看见另外,您不需要使用
gene.readline()
。您观察到了什么行为?您期望看到什么行为?您似乎跳过了文件中的第一行(由于
gene.readline()
表达式)。。。我从NCBI数据库得到文件,第一行没用。。。实际数据低于此值,因此…可以使用
guanina=line.count('g')
cytosina=line.count('c')
,然后除以
len(line)/(guanina+cytosina)
。我知道你只是个初学者,但少就是多!不,文件(
gene
)上的迭代实际上读取其余的行。也许第一个
readline
只是跳过第一行?我不确定他的“readline()”,但他主要是问如何使用
raw_input
来获取文件名。不,文件(
gene
)上的迭代实际上读取了其余的行。也许第一个
readline
只是跳过第一行?我不太确定他的“readline()”,但他主要是问如何使用
raw_input
来获取文件名他正试图计算DNA字符串中的%GC。因此,基本上,计算字母G或C总数的百分之十组成一个由a,C,G和TIt组成的字符串,谢谢!但是我现在怎么能跳过文件的第一行呢?我使用了gene.readline()来实现这个…@Ricardo我添加了行跳过,它是通过使用
next(f)
。还请记住,您提出的所有问题都已得到答复!搜索引擎是你最好的朋友:),祝你好运@vds是对的。。。我需要跳过文件的第一行,因为。。。该文件来自NCBI数据库,第一行是基因的简要定义。。。我不想在这上面得到G,A,C和t,只在文件的其余部分…@Ricardo很抱歉我做了更正。(我没有添加vds关于使用
count
,但你应该!)他正在试图计算DNA字符串中的%GC。因此,基本上,计算字母G或C总数的百分之十组成一个由a,C,G和TIt组成的字符串,谢谢!但是我现在怎么能跳过文件的第一行呢?我使用了gene.readline()来实现这个…@Ricardo我添加了行跳过,它是通过使用
next(f)
。还请记住,您提出的所有问题都已得到答复!搜索引擎是你最好的朋友:),祝你好运@vds是对的。。。我需要跳过文件的第一行,因为。。。该文件来自NCBI数据库,第一行是基因的简要定义。。。我不想在这件事上得到G,A,C和t,只在文件的其余部分@