【问题标题】:Pig Latin involving digits涉及数字的猪拉丁语
【发布时间】:2015-04-02 22:06:50
【问题描述】:

我是计算机编程的新手,我正在尝试编写一个将英语转换为 Pig Latin 的程序(对于每个单词,将第一个字母移动到单词的末尾并添加“ay”)。

如果有一个数字(以数字为单位),将其乘以 2 并加 4。

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

我得到了第一个猪拉丁部分,但似乎无法弄清楚数字部分。我的代码访问一个文本文件,但这里是执行字符串 pig-latin 的程序。我在哪里适合 number 函数?

    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)

【问题讨论】:

  • John 如何变成ndaay?错字?
  • @logic,这显然不是一个错字。我认为你的字典是错误的。哈哈。 :)

标签: list function python-3.x


【解决方案1】:

您可以测试 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)

如果您将操作拆分为多个理解,那么您将需要防范 int:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多