以下是用于dna测序的条形码生成器的代码。当我为mingc和max gc输入任何内容时,解释器不会给出任何结果。我是否使用了正确的格式,例如if mincg ='':etc。
import random
nucl_list = ['A', 'C', 'G', 'T']
length = 10
print '\nEnter desired GC content range in percentages (i.e. 50 ->50%)'
# ask for desired GC content range
mingc = raw_input("Minimum GC content (default is 40):")
if mingc == '':
mingc = 40
else:
mingc = float(mingc) / 100
maxgc = raw_input("Maximum GC content (default is 60):")
if maxgc == '':
maxgc = 60
else:
maxgc = float(maxgc) / 100
def gc_cont(barcode):
gc = 0.0
for base in range(length):
if barcode[base] == 'C' or barcode[base] == 'G':
gc += 1
else:
gc += 0
cont = gc / length
return cont
barcode = ''
while barcode == '':
for i in range(length):
barcode += random.choice(nucl_list)
#print barcode
if maxgc >= gc_cont(barcode) >= mingc:
bar_code = barcode
print bar_code
else:
barcode = ''`enter code here`
答案 0 :(得分:1)
你确实在这里使用了正确的格式(尽管使用if not mingc:
比if mingc == '':)
更常使用Pythonic。
如果您想亲自查看,可以在print "inside if"
语句中加if
,或print repr(mingc)
验证它是否显示您的预期,或仅{{1}在print mingc
之后看到你期望的代码被执行,或者在调试器中运行它。值得学习如何做到这一点。
但无论如何,这不是你的问题。您的问题是您将错误的代码放在if/else
正文中。比较:
if
因此,如果用户输入if maxgc == '':
maxgc = 60
else:
maxgc = float(maxgc) / 100
,您就会将60
设置为maxgc
或float(60) / 100
。
但是,如果用户只是按Enter键获取默认值,则他不会获得0.6
,而是获得0.6
。