为什么我的默认原始用户输入寄存器不是变量?

时间:2015-05-09 20:44:02

标签: python raw-input

以下是用于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`

1 个答案:

答案 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设置为maxgcfloat(60) / 100

但是,如果用户只是按Enter键获取默认值,则他不会获得0.6,而是获得0.6