我一直在研究Pig Latin计划。但是,它似乎没有工作,我无法弄清楚为什么。
user_input = input("Enter word to be translated:")
def translate(user_input):
first = user_input[0]
if first == "a" or "e" or "i" or "o" or "u":
user_input = user_input.lower()
user_input += "way"
return user_input
else:
user_input = user_input.lower()
user_input = user_input[1:]+first+"ay"
return user_input
print(translate(user_input))
最重要的是,我希望利用枚举来找到第一个元音的位置,切片以隔离单词的第一个字母和连接以形成单词。我已经阅读了如何在几个网站上使用它,但我似乎无法弄清楚如何正确地将它应用到这个程序。我想在def def(user_input)之前我必须定义Vowels ='aeiou'吗?
答案 0 :(得分:3)
你不能在Python中链接if
这样的语句,你必须做很多事情:
if first == "a" or first == "e" or first == "i" or first == "u":
或缩短为:
if first in ["a", "e", "i", "u"]:
答案 1 :(得分:1)
以下是解决方案。我在您的代码中做了一些更改,我将在下面解释。
user_input = input("Enter word to be translated:\n")
#change_1
vowels = ['a','e','i','o','u']
def translate(user_input):
first = user_input[0]
#change_2
if first in vowels:
user_input = user_input.lower()
user_input += "way"
return user_input
else:
user_input = user_input.lower()
#change_3
for letter in user_input:
if letter in vowels:
index_value = user_input.index(letter)
break
#change_4
user_input = user_input[index_value:] +user_input[:index_value]+ "ay"
return user_input
print(translate(user_input))
1)创建一个元音列表。
2)正如我们的朋友@zwer所提到的,你不能将if语句链接起来 蟒蛇。所以
首先是元音:
3)对于user_input中的每个字母,检查该字母是否为元音,如果该字母是元音,则找到它的索引。
例如,请输入垃圾'
这里a是第一个元音,它的索引是2
if letter in vowels:
index_value = user_input.index(letter)
4)根据维基百科
"初始元音之前的所有字母都放在单词序列的末尾"
单词' trash'它会是
user_string = user_input [2:] + user_input [:2] +" ay"
将把该索引中的单词切换为end,并在该索引之前与字母合并。最后是" ay"。
'灰' +' tr' +' ay'
希望这有帮助。
答案 2 :(得分:0)
您可以在外部范围内定义元音。
vowels = 'a', 'e', 'i', 'o', 'u'
然后你可以使用的任何地方:
if first in vowels:
答案 3 :(得分:0)
除了可以更改第三行之外,您可以执行完全相同的操作:
if first == "a" or "e" or "i" or "o" or "u":
收件人:
if first == "a" or first == "e" or first == "i" or first == "o" or first == "u":
或:
if first in 'aeiou'
但是,如果您希望使用大写字母,建议将first
更改为first.lower()
。
它变成:
user_input = input("Enter word to be translated:")
def translate(user_input):
first = user_input[0]
if first.lower in 'aeiou':
user_input = user_input.lower()
user_input += "way"
return user_input
else:
user_input = user_input.lower()
user_input = user_input[1:]+first+"ay"
return user_input
print(translate(user_input))
如果您希望代码短一些,我设法将其缩短为:
def translate():
user_input = input('Enter a word or sentence')
for i in range(len(user_input.split())):print(str((user_input.split())[i][1::])+((user_input.split())[i])[0]+'ay', end=' ')
translate()
答案 4 :(得分:0)
“我的解决方案”涵盖以下规则: 1.单词是字母(a-z,A-Z)或撇号的连续序列。您可以假设函数的输入将仅仅是一个“单词”。例如:斑马,苹果 2.如果单词以元音开头,则Pig Latin版本是原始单词,并在其末尾添加“ way” 3.如果单词以辅音或一系列连续的辅音开头,Pig Latin版本会将所有辅音转移到单词的第一个元音,然后在单词的末尾添加“ ay”。 4.如果字母“ y”是单词的第一个字母,则应将其视为辅音,否则应将其视为元音。 5.如果原始单词大写,则该单词的新的Pig Latin版本应在首字母大写。如果原始的大写字母是辅音,并因此而被移动,则不应在新位置将其大写一次。
解决方案从这里开始:
eng_to_pig_latin = {"football": "ootballfay", "Pittsburgh":"Ittsburghpay",
"Apple":"Appleway","oink":"oinkway",
"ontology":"ontologyway","yellow":"ellowyay","yttrium":"iumyttray"}
eng_word = 'yttrium'
vowels = 'aeiou'
def pig_latin(eng_word):
sub,str1 = [],''
first = eng_word[0]
second = eng_word[1]
# Rule 2
if first.lower() in vowels:
piglatin = eng_word +'way'
# Rule 3
elif first.lower() == first and second.lower() in vowels:
piglatin = eng_word[1:]+first+'ay'
elif first.lower()+second.lower() not in vowels:
# Rule 3 & 4
for l in eng_word:
if l not in vowels:
sub.append(l)
else:
str1 = eng_word[eng_word.index(l):]
break
str2 = ''.join(sub)
piglatin = str1+str2+'ay'
else:
# Rule 5
piglatin = eng_word[1:].capitalize()+first.lower()+'ay'
print(f'Test word is {eng_word} and its equivalent piglatin word is
{piglatin}. Comparison with mapping dictionary is
{eng_to_pig_latin[eng_word] == piglatin}')
pig_latin(eng_word)
注意:字典仅用于交叉检查结果是否符合预期,这是我在上一个打印语句中所做的。
答案 5 :(得分:0)
我将给定单词翻译成Pig Latin翻译的逻辑
元音= ['a','e','i','o','u']
def igpay(名称):
a_list =列表(名称)
如果元音中的a_list [0]:
print(“第一个字母是元音”)
apnd_letters =“ way”
其他:
print(“第一个字母是辅音”)
a_list.append(a_list [0])
a_list.pop(0)
apnd_letters =“ ay”
print(“猪的转载为{0}”。format(“”。join(a_list)+ str(apnd_letters)))
输出:
igpay(“猪”) 第一个字母是辅音 猪的转运是igpay
igpay(“苹果”) 第一个字母是元音 猪的转运是苹果的方式