2016-04-29 25 views
0
def intron_comparison(retained_introns_file, non_retained_introns_file): 
    with open(retained_introns_file, 'r') as r, open(non_retained_introns_file, 'r') as nr: 
     r_gc = avg_gc(r) 
     nr_gc = avg_gc(nr) 
     r_avglen = intlength(r) 
     nr_avglen = intlength(nr) 
     r_percdiv = intdiv(r) 
     nr_percdiv = intdiv(nr) 
    return ('The GC content for non retained introns is ' + nr_gc + '\n' + 
     'The GC content for retained introns is ' + r_gc + '\n' + 
     'The average length of non retained introns is ' + nr_avglen + '\n' + 
     'The average length of retained introns is ' + r_avglen + '\n' + 
     'The percent of non retained introns divisible by 3 is ' + nr_percdiv + '\n' + 
     'The percent of retained introns divisible by 3 is ' + r_percdiv + '.') 

上面是我写的一个函数,它将3个其他函数合并在一起,并在它们之间比较2个文件。我想在return语句前值来表示一个描述符,你可以看到,但我收到以下错误:带有字符串和函数的python return语句

TypeError: Can't convert 'NoneType' object to str implicitly 

关于最后一行。我错过了什么?

编辑:代码奇妙地工作,我只是有这个返回语句的问题 - 我认为这是我失踪的一些小事情?预先感谢您的帮助!

+2

您尝试与字符串连接的变量之一是'None'。字符串只能与其他字符串连接。我的心理调试告诉我,你所调用的函数只是打印它们的值,而不是返回其计算值的字符串表示。 – TigerhawkT3

+1

你的6个函数之一返回'None'。在与字符串连接时,更好地将这些变量包装在'str()'中。 – schwobaseggl

+0

感谢您的意见!现在寻找那些无值的狩猎.... :) – Ouwan12

回答

-1

对于像你所做的一些事情的大字符串。

首先使用“”“”“”而不是试图按照自己的方式来构建它。

第二次使用%样式或格式将值内插到字符串中。较新的python建议是使用格式。

return """The GC content for non retained introns is {nr_gc} 
The GC content for retained introns is {r_gc} 
The average length of non retained introns is {nr_avglen} 
The average length of retained introns is {r_avglen} 
The percent of non retained introns divisible by 3 is {nr_percdiv} 
The percent of retained introns divisible by 3 is {r_percdiv}. 
""".format(r_gc = avg_gc(r), 
      nr_gc = avg_gc(nr), 
      r_avglen = intlength(r), 
      nr_avglen = intlength(nr), 
      r_percdiv = intdiv(r) 
      nr_percdiv = intdiv(nr)) 
+1

这将消除该错误,但它仍将为受影响的值打印“无”。 – TigerhawkT3

+0

问题不在于如何摆脱None,而是如何显示结果。在他特别提到的问题中,他说函数的结果是正确的 –

+0

而且,正如我所说的,我们不知道函数是否返回_ None,这是他们如果以前一直在打印它们会做的事情结果并没有返回任何东西。 – TigerhawkT3