所以我有一个函数,它接受一个句子,然后用piglatin返回。代码如下:
import re
from string import ascii_uppercase
def isvowel(ch):
vowels = ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U")
for i in range(len(ch)):
if ch[i] in vowels:
return i
return -1
def format(ch):
if any(x in ascii_uppercase for x in ch):
ch = ch.capitalize()
m = re.search(r'\W+', ch)
if m:
ch = ch.replace(m.group(0), '') + m.group(0)
return ch
def igpay(astring):
vowels = ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U")
words = astring.split()
count = 0
for ch in words:
vowel = isvowel(ch)
if vowel == 0:
astring = astring.replace(ch,(format(ch + "way")))
else:
astring = astring.replace(ch,(format(ch[vowel:] + ch[:vowel] + "ay")))
astring = astring.strip()
return astring
当我输入一个单词时,输出效果很好,但当我输入一个句子时,它就失控了。你知道吗
示例: 我得到的是:
>>>igpay("An apple a day keeps the doctor away")
>>>'Anwawaywayy awaywaypplewawaywayy awayway dawaywayy eepskay ethay octorday awaywaywawaywayy'
我应该得到:
>>>igpay("An apple a day keeps the doctor away")
>>>'Anway appleway away ayday eepskay ethay octorday awayway'
如果我分别输入每个单词,就会得到正确的返回值。怎么回事?你知道吗
这是因为通过替换词尾来修改循环中的整个句子。你知道吗
相反,您应该为列表中的每个单词执行此操作,将单词收集到列表中,并将它们按空格连接:
用法示例(正是您要查找的内容):
相关问题 更多 >
编程相关推荐