grok
Сен. 26, 2010 11:27:10
Ed
Как вы смотрите на эти аналоги?
roll = []
for key in range(0, len(txt), 3):
roll.append(dic.get(txt[key:key+3]))
print ''.join(roll)
print ''.join([dic[txt[key:key+3]] for key in range(0, len(txt), 3)])
Я сам начинающий питонер, изучаю его для себя, и написание сложных конструкций и их понимание даются не с лихвой. Думаю и тем, кому нужна помощь в таких простеньких задачах, будет понятен короткий-построчный код (легче для понимания). =)
AmF
Сен. 26, 2010 11:59:55
Скажите, пжлст, а почему вот в этой строке:
мне выдается ошибка TypeError: expected string, NonType found? - т.е., насколько я понял, переменной str_ пытаются присвоить нечто, что не имеет типа, хотя предполагается строка?
Спасибо
Isem
Сен. 26, 2010 12:52:49
Ed
Как вы смотрите на эти аналоги?
Код:
print ''.join([dic[txt] for key in range(0, len(txt), 3)])
Только квадратные скобки вокруг аргумента функции join не только не нужны, но даже и нежелательны.
Ed
Сен. 26, 2010 16:33:24
grok
Я сам начинающий питонер, изучаю его для себя, и написание сложных конструкций и их понимание даются не с лихвой. Думаю и тем, кому нужна помощь в таких простеньких задачах, будет понятен короткий-построчный код (легче для понимания). =)
Дык я привел и короткий построчный. Ну разве что вынести txt в отдельную переменную осталось.
На мой взгляд все эти многочисленные переменные n,str_, lne и прочие не упрощают код, а наоборот усложняют его, делают менее читабельным.
AmF
Сен. 26, 2010 20:16:42
А нет, это моя ошибка - не доглядел … - всё классно работает.
А вот если, например, во входном файле записаны несколько последовательностей и каждую последовательность надо преобразовать и записать отдельно в выходной файл - каждую - с новой строки?
Т.е.:
<название посл-сти 1>
посл-сть 1
<название посл-сти 2>
посл-сть 2
Т.е. необходимо сначала вывести название, начинающееся с <, а потом - преобразованную посл-сть, далее - название след. посл-сти - и ее саму, преобразованную. Я так понимаю, надо делать что-то вроде такого цикла: если строка начинается с <. то вывести название, если не с < - выполнять действия по преобразованию и т.д. … Или я неправильно понимаю?
Спасибо
AmF
Сен. 27, 2010 20:04:19
Скажите, пжлст, почему в такой конструкции:
for line in f:
if line[0] == '>':
f1.write(line)
text = f.read() ###
lne = text.replace('\n', '')
n = len(lne)
key = 0
roll = []
while key < n:
nlist=lne[key:key+3]
key=key+3
roll.append(dic.get(nlist))
seq = ''
#str_ = seq.join(roll)
#f1.write(str_)
выдается ошибка в ###строке? А если ставишь просто
то след. строку не читает - там text неизвестен.
Спасибо
sp3
Сен. 27, 2010 21:14:43
Зачем вам читать файл по несколько раз? Это неправильно.
AmF
Сен. 27, 2010 22:00:35
Ну … мне надо знать содержимое след. строк (после line)… - их же надо прочитать …