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.txt和sequence2.txt)。。。然后,在输入()函数通知的序列/文件上获取g、a、c和t的数据
例如:
1) 系统询问序列号
2) 用户类型sequence2
3) 系统从sequence2.txt获取数据
4) 变量g、a、c和t从该文件中获取数据
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,只在文件的其余部分@