2015-04-02 2 views
1

Я новичок в программировании, и я пытаюсь написать программу, которая преобразует английский в Pig Latin (для каждого слова переместите первую букву в конец слова и добавьте «ay») ,Pig Latin с цифрами

Если есть число (цифрами), умножить его на 2 и прибавить 4.

ex. John has 4 cats --> ndaay ashay 12 atscay) 

я получил первую свинью латинская часть вниз, но не могу показаться, чтобы выяснить номер детали. Мой код обращается к текстовому файлу, но вот программа, которая будет выполнять строку pig-latin. Где бы я поместил числовую функцию?

def pig_english(): 
     letterlist = [i + i[0] for i in read_script()] 
     ayList = [i + 'ay' for i in letterlist] 
     delaylist = [i[1:] for i in ayList] 
     print (delaylist) 
+1

Как «Джон» стал «ndaay»? Опечатка? – logic

+0

@logic, это явно не опечатка. Я думаю, что ваш словарь ошибочен. Ха-ха. :) – Jakar

ответ

0

Вы можете проверить, если i.isdigit(), а затем приводится к междунар но это будет легче делать все это в одном понимании:

def pig_english(words): 
    ayList = [str(int(i)*2+4) if i.isdigit() else i[1:]+i[0]+"ay" for i in words] 
    print (ayList) 

Если разделить операции по нескольким постижений, то вам нужно будет защита от цепей:

def pig_english(words): 
    numberlist = [int(i)*2+4 if i.isdigit() else i for i in words] 
    letterlist = [i if isinstance(i, int) else i + i[0] for i in numberlist] 
    ayList = [i if isinstance(i, int) else i + 'ay' for i in letterlist] 
    delaylist = [str(i) if isinstance(i, int) else i[1:] for i in ayList] 
    print (delaylist) 

>>> pig_english("John has 4 cats".split()) 
['ohnJay', 'ashay', '12', 'atscay']