2015-04-02 59 views
1

我是新来的计算机编程,我试图编写一个程序,将英语转换成猪拉丁语(对于每个单词,将第一个字母移动到单词的结尾并添加'ay') 。猪拉丁语涉及数字

如果有一个数字(数字),乘以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 2015-04-02 22:15:37

+0

@logic,这显然不是一个错字。我认为你的字典是错的。哈哈。 :) – Jakar 2015-04-03 01:31:18

回答

0

您可以测试是否i.isdigit(),然后转换为int,但它会更容易做这一切在一个理解:

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']