Функция в этом языке обычно начинается с def. То есть то, что вы показали функцией не является, это просто код.
Покажите обе функции main и zvuk.
def zvuk():
dic = {'ndk':'k', 'vfj':'a', 'bik':'f', 'vbj':'r', 'shf':'u',
'bvf':'p', 'vjn':'c', 'ewi':'e', 'rvk':'g'}
sl = raw_input("Enter the codon: ")
return ' '.join([dic.get(cod, ' ') for cod in sl.split(', ')])
def main():
text = "ndkvfjbikvbjsh\nfbvfvjnewirvk"
text.replace('\n', '')
for key in dic:
text = text.replace(key, dic[key]) ###
print text
EdЭтот код не совсем правильно будет работать, например вот с такой строкой:
А просто пройтись по словарю и поменять не проще будет?
Как-нибудь так:Ну или тоже самое с извоащениями:dic = {'ndk':'k', 'vfj':'a', 'bik':'f', 'vbj':'r', 'shf':'u',
'bvf':'p', 'vjn':'c', 'ewi':'e', 'rvk':'g'}
text = "ndkvfjbikvbjsh\nfbvfvjnewirvk".replace('\n', '')
for key in dic:
text = text.replace(key, dic[key])
print textprint reduce(lambda x, y: x.replace(y, dic[y]), dic, "ndkvfjbikvbjsh\nfbvfvjnewirvk".replace('\n', ''))
text = "ndkvndkfjbikvbjsh\nfbvfvjngrewirvkl".replace('\n', '')
dic={'ndk':'k', 'vfj':'a', 'bik':'f', 'vbj':'r', 'shf':'u',
'bvf':'p', 'vjn':'c', 'ewi':'e', 'rvk':'g'}
text="ndkndkvfjbikvbjsh\nfbvfvjnewirvk"
txt=text.replace('\n', '')
n=len(txt)
key=0
roll=[]
while key < n:
nlist=txt[key:key+3]
key=key+3
roll.append(dic.get(nlist))
seq = ''
str_ = seq.join(roll)
print str_
grokКак ваш пример согласуется с вот этим утверждением автора?
Этот код не совсем правильно будет работать, например вот с такой строкой:text = "ndkvndkfjbikvbjsh\nfbvfvjngrewirvkl".replace('\n', '')
всю строку можно разбить на такие тройки (лишних нет).Что есть, например, vnd или kfj в вашем примере? Таких троек нет в словаре.
AmFВаш zvuk делает не то, что вы сказали. Она не ‘принимает тройку символов’ и не ‘возвращает 1 символ ’. Сделайте ее такой и тогда ее можно будет вызвать в main. Только смысла в этом не будет, поскольку этот функционал реализуется словарем.
Вот. Но мне бы хотелось, чтобы в main() строка ### использовала бы zvuk(), т.е., как я понимаю, ее надо как-то вызвать … - или это невозможно сделать?
EdЯ всего лишь немного утрировал пример.. (конечно же, все тройки должны быть прописаны в словаре ИМХО). Как мне показалось по заданию, вся строка должна быть разбита на триады, ибо одиночных символов быть не должно.. В Вашем же примере, одиночные символы остаются..
Как ваш пример согласуется с вот этим утверждением автора?всю строку можно разбить на такие тройки (лишних нет).Что есть, например, vnd или kfj в вашем примере? Таких троек нет в словаре.
dic={'ndk':'k', 'vfj':'a', 'bik':'f', 'vbj':'r', 'shf':'u',
'bvf':'p', 'vjn':'c', 'ewi':'e', 'rvk':'g'}
f = open("in.txt", 'r')
f1 = open("out.txt", 'w')
for line in f:
lne = line.replace('\n', '')
n=len(lne)
key=0
roll=[]
while key < n:
nlist=lne[key:key+3]
key=key+3
roll.append(dic.get(nlist))
f2 = open('out.txt', 'r')
for line in f2:
seq = ''
str_ = seq.join(roll)
f1.write(str_)
f.close()
f1.close()
dic={'ndk':'k', 'vfj':'a', 'bik':'f', 'vbj':'r', 'shf':'u',
'bvf':'p', 'vjn':'c', 'ewi':'e', 'rvk':'g'}
f = open("in.txt", 'r')
f1 = open("out.txt", 'w')
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_)
f.close()
f1.close()
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)
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)])