2015-04-02 58 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']