【问题标题】:python return statement with strings and functions带有字符串和函数的python返回语句
【发布时间】:2016-04-29 01:34:19
【问题描述】:
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 语句在每个值之前表示一个描述符,但我收到以下错误:

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

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

编辑:代码运行得非常好,我只是在那个 return 语句上遇到了问题——我认为这是我遗漏的一些小东西?预先感谢您的帮助!

【问题讨论】:

  • 您尝试与字符串连接的变量之一是None。字符串只能与其他字符串连接。我的心理调试告诉我,你调用的那些函数只是打印它们的值,而不是返回它们计算值的字符串表示形式。
  • 您的 6 个函数之一正在返回 None。与字符串连接时,最好将这些变量包装在 str() 中。
  • 感谢您的意见!现在正在寻找那些 None 值.... :)

标签: python string function return multiple-return-values


【解决方案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))

【讨论】:

  • 这将消除错误,但仍会为受影响的值打印None
  • 问题不在于如何摆脱 None,而在于如何显示结果。在问题中他特别说函数的结果是正确的
  • 而且,正如我所说,我们不知道这些函数是否应该返回None,如果它们以前打印过它们会这样做他们的结果,不返回任何东西。
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 2017-02-16
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2018-08-12
  • 2011-03-22
  • 1970-01-01
相关资源
最近更新 更多