RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1607877
Accepted
blessed s1r
blessed s1r
Asked:2025-02-28 19:20:17 +0000 UTC2025-02-28 19:20:17 +0000 UTC 2025-02-28 19:20:17 +0000 UTC

解决“Pig Latin”问题时出错

  • 772

为了以防万一,我刚刚学习 Python。我的代码可以完成这项工作,但是由于某种原因,当使用“have”这个词时,它会多次执行该操作。我花了很多时间尝试查找错误,但找不到。我希望得到某人和用户的帮助。不幸的是,我无法处理网站上的代码格式,结果发现它存在于其他地方)

任务:编写一个程序,使用“猪拉丁文”原理改变单词。

  1. 如果单词以辅音字母(包括 y)开头,则将单词从开头到第一个元音的所有字母(y 除外)移至单词末尾,并补充字母组合 ay。例如,单词computer将被转换为computercay,单词think将被转换为inkthay;

  2. 如果单词以元音开头(不包括 y),则只需在单词末尾添加 way。例如,单词 algorithm 将会变成 algorithmway,而 office 将会变成 officeway。

还添加对单词中大写字母的检查。它们必须被保存下来。

  1. 如果原文中某个单词的开头是大写字母,那么在翻译成“猪拉丁语”时,该单词的开头也应该大写,而移动到单词末尾的字母应该变为小写。例如,单词“Computer”应转换为“Omputercay”。

  2. 如果单词末尾有标点符号,则翻译完成后该标点符号应保留在那里。也就是说,句子末尾的单词是Science!需要转变为 Iencescay!

    def pig_latin(words_list):
        vowels = ['a','A','e','E','i','I','o','O','u','U']
        consonants = ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z',
                     'B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z']
        punctuation_marks = [',','.','!','?']
        change_words = []
    
        for word in words_list:
            if word[0] in vowels:
                if word[-1] in punctuation_marks:
                    change_words.append(word[0 : -1] + 'way' + word[-1])
                else:
                    change_words.append(word + 'way')
    
            elif word[0] in consonants :
                if word[0].isupper() and word[-1] in punctuation_marks:
                    for index in range(len(word)):
                        if word[index] in vowels:
                            change_words.append(word[index].upper() + word[-index:-1] + word[:index].lower() + 'ay' + word[-1])
                            print('1')
                elif word[0].isupper() and word[-1] not in punctuation_marks:
                    for index in range(len(word)):
                        if word[index] in vowels:
                            change_words.append(word[index].upper() + word[-index:] + word[:index].lower() + 'ay')
                            print('2')
                elif word[0].lower() and word[-1] in punctuation_marks:
                    for index in range(len(word)):
                        if word[index] in vowels :
                            change_words.append(word[index:-1] + word[:index] + 'ay' + word[-1]) 
                            print('3')
                elif word[0].lower() and word[-1] not in punctuation_marks:  
                    for index in range(len(word)):
                        if word[index] in vowels:
                            change_words.append(word[index:] + word[:index] + 'ay')
                            print('4')
    
    
        return ' '.join(change_words)
    
    def main():
        user_input = input('Введите слово для перевода на "поросячью латынь"')
        user_input = user_input.split()
        print(pig_latin(user_input))
    
    if __name__ == '__main__' :
        main()
    
python
  • 1 1 个回答
  • 45 Views

1 个回答

  • Voted
  1. Best Answer
    strawdog
    2025-02-28T21:54:23Z2025-02-28T21:54:23Z

    您的错误是,当在以辅音开头的单词中搜索第一个元音时,找到该元音后并没有中断循环(以及对该单词的处理)。
    我会使其更短,稍微改变逻辑。

    word_list = ["think", "algorithm", "office", "Computer", "Science!"]
    def pig_latin(words):
        results = []
        for word in words:
            vowels = ['a', 'e', 'i', 'o', 'u']
            consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z']
            punctuation_marks = [',', '.', '!', '?']
            ending = ""
            if word[-1] in punctuation_marks:
                res = word[:-1]
                ending = word[-1]
            else:
                res = word
            if res[0] in vowels:
                res = res+"way"
            else:
                for i in range(len(res)):
                    if res[i] in vowels:
                        res = res[i:]+res[:i]+"ay"
                        break
            if word.lower() != word:
                res = res.title()
            results.append(res+ending)
        return results
    
    print(pig_latin(word_list))
    

    ['inkthay', 'algorithmway', 'officeway', 'Omputecay', 'Iencescay!']

    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5