2016-04-29 108 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