首页 > 解决方案 > 在这个作业中,您将要求用户输入一个英文单词,将该单词翻译成“Pig Latin”,然后打印这两个单词

问题描述

我的计算机科学课有这个作业:

在此作业中,您将要求用户输入一个英文单词,将该单词翻译成“Pig Latin”,然后打印这两个单词。

这些是规则:

  1. 如果一个单词以元音开头(a、A、e、E、i、I、o、O、u、U),则通过在单词末尾添加“方式”来形成翻译。例如“at”变成“atway”,“egg”变成“eggway”

  2. 如果一个词不包含元音(a, A, e, E, i, I, o, O, u, U),则翻译是通过在词尾添加“方式”来形成的。例如“my”变成“myway”,“by”变成“byway”

  3. 如果单词以辅音开头并包含元音,则通过将辅音向上移动到单词末尾的第一个元音并添加“ay”来形成翻译。例如“bat”变成“atbay”,“that”变成“atthay”,“three”变成“eethray”

  4. 以首字母大写开头的单词应翻译成首字母大写的单词。例如“Houston”变成“Oustonhay”,“Iceland”变成“Icelandway”,“Marry”变成“Arrymay”

这是我到目前为止的编程。我坚持第三条和第四条规则:

def is_vowel(letter):
    return letter.upper() in 'AEIOU'

def has_vowel(word):
    for letter in word:
        if is_vowel(letter):
            return True 
    return False

def translate(word):
    if is_vowel(word[0]): #is the first letter
        return word + "way"
    elif has_vowel(word):
        pass
    else: #there is no vowel
        return word + "way"

#stuff before the loop
print("This program will translate a word from English to Pig Latin.")
choice = "Y"

#stuff in the loop
while choice.upper() == 'Y':
    word = input("Please enter a word: ")
    print(word, "becomes", translate(word) + ".")
    choice = input("Would you like another word? (Y/N) ")

#stuff after the loop
print("Ankthay ouyay!")

我知道这是对的,因为我们在课堂上做了这部分,但是当我回到家时,我完全迷失了,不知道我需要做什么!请帮忙!

标签: python

解决方案


由于这是一种家庭作业,因此我不是编写代码(SO 上值得称赞的做法)。

规则 3 应该包括找出哪个字符是第一个元音,然后将单词的片段从开头移动到那个字符到单词的结尾(从技术上讲,你可以用两个片段替换字符串,因为字符串在 python 中是不可变的)然后附加“ay”

规则 4:如果单词的第一个字母的大写(在任何修改之前)与该字母相同,则将该信息保存到某个变量中,并根据该更改(或不更改)输出的第一个字母


推荐阅读