为什么我的默认原始用户输入没有注册为变量?

Why doesn't my default raw-user-input register as a variable?

下面是我的 DNA 测序条形码生成器代码。当我没有为 mingc 和 max gc 输入任何内容时,解释器不会给出任何结果。我是否使用了正确的格式,例如。如果 mincg ='': 等等

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`

您在这里确实使用了正确的格式(尽管使用 if not mingc:if mingc == '':) 通常更符合 Pythonic。

如果您想亲自查看,可以在 if 语句中添加 print "inside if",或 print repr(mingc) 以验证它是否显示了您的预期,或者只是 print mingcif/else 之后查看您期望的代码已执行,或者 运行 在调试器中。值得学习如何做到这一点。

但无论如何,这不是你的问题。您的问题是您在 if 正文中放入了错误的代码。比较:

if maxgc == '':
    maxgc = 60
else:
    maxgc = float(maxgc) / 100

因此,如果用户键入 60,您要将 maxgc 设置为 float(60) / 100,或 0.6

但是如果用户只是按回车键得到默认值,他不会得到 0.6,他会得到 60.