如何为 pig latin 和 izzle 翻译创建代码以及同时应用它们的代码?
How to create codes for pig latin and izzle translation and a code to apply them both?
目标:
因此,我的目标是编写代码将单词翻译成 pig latin 和 izzle 语言。然后编写另一个代码 "apply_language_game" 输入一些数据,另一个输入是他们想要传输的语言(pig latin 或 izzle)
猪拉丁语:
Pig Latin 是最著名的英语游戏之一。你可以把一个英文单词转换成 Pig
拉丁语通过将所有辅音移动到第一个元音到单词的末尾,然后附加“ay”。
在“hello”中,h 在第一个元音之前,因此它将被推到单词“elloh”的末尾,然后附加“ay”
给出:'Ellohay'
在 Chris 中:Chr 在第一个元音之前,因此它们将被推到句子末尾。
例如。 “你好,克里斯,你好吗?”变成“Ellohay, ischray owhay areay ouyay?”
伊兹尔:
你可以转换
通过将最后一个元音及其所有后续辅音替换为“-izzle”,将英语单词转换为 -izzle。
例如。 “圣诞快乐”变成了“Mizzle Christmizzle”。如果一个单词只有一个元音,例如 'and' 和 'a' 或者
它不包含基数元音 [a, e, i, o, u],就像单词 'my' 你可以替换整个
带有 'izzle' 的单词或在单词末尾附加“-izzle”。
代码:
因此,我编写了将单词转换为 pig latin 和 izzle 的代码。
这是pig_latin一个:
def pig_latin(word):
word = list(word)
vowels = ['a', 'e', 'i', 'o', 'u']
vowel = [x for x in word if x in vowels]
vowel1 = vowel[0]
for i in word:
if word.index(i) < word.index(vowel1):
ind = word.index(i)
word.pop(ind)
word.append(i)
word.append("ay")
return "".join(word)
这是第一个:
def izzle(word):
word = list(word)
vowels = ['a', 'e', 'i', 'o', 'u']
vowel = [x for x in word if x in vowels]
if vowel == [] or len("".join(vowel)) == 1:
return "".join(word) + "izzle"
else:
vowel1 = vowel[-1]
for i in word:
if word.index(i) >= word.index(vowel1):
ind = word.index(i)
word.pop(ind)
word.append("izzle")
return "".join(word)
这里是 apply_language_game 的代码:
def apply_language_game(text, language_game):
text = text.split()
if language_game == pig_latin:
lst = [pig_latin(x) for x in text]
return " ".join(lst)
if language_game == izzle:
lst = [izzle(x) for x in text]
return " ".join(lst)
现在,如果我想通过将包含一些数据的文件转换为 pig latin 和 izzle 来测试我的代码。
文件包含:
“水果和蔬菜和蔬菜的预算和蔬菜在商店和蔬菜清洁水果和蔬菜”
该代码适用于 pig latin,但不适用于 izzle。
显示以下错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.4\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.4\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/Dell/PycharmProjects/pythonHW3/word_analyzer.py", line 84, in <module>
print(apply_language_game(text, izzle))
File "C:/Users/Dell/PycharmProjects/pythonHW3/word_analyzer.py", line 67, in apply_language_game
lst = [izzle(x) for x in text]
File "C:/Users/Dell/PycharmProjects/pythonHW3/word_analyzer.py", line 67, in <listcomp>
lst = [izzle(x) for x in text]
File "C:/Users/Dell/PycharmProjects/pythonHW3/word_analyzer.py", line 40, in izzle
if word.index(i) >= word.index(vowel1):
ValueError: 'i' is not in list
请告诉我如何解决这个问题?或者,如果我的任何代码有问题,或者我可以如何改进我的代码?
由于您试图模仿 pig_latin
函数并对其进行修改以提供 Izzle
翻译,这有点错误,因为转换 pig_latin 的逻辑不同并且具有字符的循环移位,而在 Izzle
中更像是查找和替换,
以下功能适合您
def izzle(word):
word = list(word)
length = len(word)
vowels = ['a', 'e', 'i', 'o', 'u']
lastVowelIndex = int()
for i, char in enumerate(word[::-1]):
if char in vowels:
lastVowelIndex = length-i
break
return ''.join(word[:lastVowelIndex-1]) + 'izzle'
目标: 因此,我的目标是编写代码将单词翻译成 pig latin 和 izzle 语言。然后编写另一个代码 "apply_language_game" 输入一些数据,另一个输入是他们想要传输的语言(pig latin 或 izzle)
猪拉丁语: Pig Latin 是最著名的英语游戏之一。你可以把一个英文单词转换成 Pig 拉丁语通过将所有辅音移动到第一个元音到单词的末尾,然后附加“ay”。 在“hello”中,h 在第一个元音之前,因此它将被推到单词“elloh”的末尾,然后附加“ay” 给出:'Ellohay' 在 Chris 中:Chr 在第一个元音之前,因此它们将被推到句子末尾。 例如。 “你好,克里斯,你好吗?”变成“Ellohay, ischray owhay areay ouyay?”
伊兹尔: 你可以转换 通过将最后一个元音及其所有后续辅音替换为“-izzle”,将英语单词转换为 -izzle。 例如。 “圣诞快乐”变成了“Mizzle Christmizzle”。如果一个单词只有一个元音,例如 'and' 和 'a' 或者 它不包含基数元音 [a, e, i, o, u],就像单词 'my' 你可以替换整个 带有 'izzle' 的单词或在单词末尾附加“-izzle”。
代码: 因此,我编写了将单词转换为 pig latin 和 izzle 的代码。 这是pig_latin一个:
def pig_latin(word):
word = list(word)
vowels = ['a', 'e', 'i', 'o', 'u']
vowel = [x for x in word if x in vowels]
vowel1 = vowel[0]
for i in word:
if word.index(i) < word.index(vowel1):
ind = word.index(i)
word.pop(ind)
word.append(i)
word.append("ay")
return "".join(word)
这是第一个:
def izzle(word):
word = list(word)
vowels = ['a', 'e', 'i', 'o', 'u']
vowel = [x for x in word if x in vowels]
if vowel == [] or len("".join(vowel)) == 1:
return "".join(word) + "izzle"
else:
vowel1 = vowel[-1]
for i in word:
if word.index(i) >= word.index(vowel1):
ind = word.index(i)
word.pop(ind)
word.append("izzle")
return "".join(word)
这里是 apply_language_game 的代码:
def apply_language_game(text, language_game):
text = text.split()
if language_game == pig_latin:
lst = [pig_latin(x) for x in text]
return " ".join(lst)
if language_game == izzle:
lst = [izzle(x) for x in text]
return " ".join(lst)
现在,如果我想通过将包含一些数据的文件转换为 pig latin 和 izzle 来测试我的代码。 文件包含: “水果和蔬菜和蔬菜的预算和蔬菜在商店和蔬菜清洁水果和蔬菜”
该代码适用于 pig latin,但不适用于 izzle。 显示以下错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.4\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.4\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/Dell/PycharmProjects/pythonHW3/word_analyzer.py", line 84, in <module>
print(apply_language_game(text, izzle))
File "C:/Users/Dell/PycharmProjects/pythonHW3/word_analyzer.py", line 67, in apply_language_game
lst = [izzle(x) for x in text]
File "C:/Users/Dell/PycharmProjects/pythonHW3/word_analyzer.py", line 67, in <listcomp>
lst = [izzle(x) for x in text]
File "C:/Users/Dell/PycharmProjects/pythonHW3/word_analyzer.py", line 40, in izzle
if word.index(i) >= word.index(vowel1):
ValueError: 'i' is not in list
请告诉我如何解决这个问题?或者,如果我的任何代码有问题,或者我可以如何改进我的代码?
由于您试图模仿 pig_latin
函数并对其进行修改以提供 Izzle
翻译,这有点错误,因为转换 pig_latin 的逻辑不同并且具有字符的循环移位,而在 Izzle
中更像是查找和替换,
以下功能适合您
def izzle(word):
word = list(word)
length = len(word)
vowels = ['a', 'e', 'i', 'o', 'u']
lastVowelIndex = int()
for i, char in enumerate(word[::-1]):
if char in vowels:
lastVowelIndex = length-i
break
return ''.join(word[:lastVowelIndex-1]) + 'izzle'