Оператор возврата python со строками и функциями

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

относительно этой последней строки. Что мне не хватает?

РЕДАКТИРОВАТЬ: код работает чудесно, у меня просто проблемы с этим оператором возврата - я предполагаю, что это какая-то маленькая вещь, которую я пропускаю? Заранее спасибо за вашу помощь!

1 ответ

Для большой струны, как то, что у вас есть, сделать несколько вещей.

Сначала используйте """ """ вместо того, чтобы пытаться построить его таким, какой вы есть.

Во-вторых, используйте% style или format для интерполяции значений в строки. Более новая рекомендация 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))
Другие вопросы по тегам