为什么我的默认原始用户输入没有注册为变量?
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 mingc
在 if/else
之后查看您期望的代码已执行,或者 运行 在调试器中。值得学习如何做到这一点。
但无论如何,这不是你的问题。您的问题是您在 if
正文中放入了错误的代码。比较:
if maxgc == '':
maxgc = 60
else:
maxgc = float(maxgc) / 100
因此,如果用户键入 60
,您要将 maxgc
设置为 float(60) / 100
,或 0.6
。
但是如果用户只是按回车键得到默认值,他不会得到 0.6
,他会得到 60
.
下面是我的 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 mingc
在 if/else
之后查看您期望的代码已执行,或者 运行 在调试器中。值得学习如何做到这一点。
但无论如何,这不是你的问题。您的问题是您在 if
正文中放入了错误的代码。比较:
if maxgc == '':
maxgc = 60
else:
maxgc = float(maxgc) / 100
因此,如果用户键入 60
,您要将 maxgc
设置为 float(60) / 100
,或 0.6
。
但是如果用户只是按回车键得到默认值,他不会得到 0.6
,他会得到 60
.