我是一名非常喜欢编程的本科生。我在做练习的时候遇到了一个问题,我很困惑。我在网上搜索了相关文件(https://www.dreamincode.net/forums/topic/293449-simple-pig-latin-program-have-trouble/),但我还不能清楚地理解。
要求如下:
给定一个空格分隔的单词序列,返回一个新的空格分隔的单词序列,修改为猪拉丁语。这里的猪拉丁语定义为修改一个单词以去掉单词第一个元音之前的字母,并在其末尾添加“ay”。如果单词以元音开头(a、e、i、o 或 u,而不是 y),只需在其末尾添加“way”即可。例如:ball 变成 allbay 而 I 变成 Iway。提示: split() 和 join() 函数在这里可能很有用。
Example:
Input: "this is a test"
Output: "isthay isway away esttay"
Example 2:
Input: "how are you today"
Output: "owhay areway ouyay odaytay"
我的代码如下:
def pig_latin(s):
VOWELS = ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U")
words = s.split()
s1 = ''
s2 = ''
for w in words:
if w[0] in VOWELS:
s1 += w + 'ay'
else:
s2 += w[1:] + w[0] + 'ay'
return s1.join(s2)
测试用例如下:
Traceback (most recent call last):
File "/grade/run/test.py", line 40, in test_hard
self.assertEqual(pig_latin(n), a)
AssertionError: 'hriscaylustercayhrowtay' != 'ischray usterclay owthray'
- hriscaylustercayhrowtay
? -- ^ ^^
+ ischray usterclay owthray
? ++ ^ + ^ ++
也
Traceback (most recent call last):
File "/grade/run/test.py", line 33, in test_case
self.assertEqual(pig_latin(n), a)
AssertionError: 'hisayaayofayiisayaayofaysisayaayofaytisay[472 chars]fayy' != 'isthay isway away ongerlay entencesay ofw[20 chars]yday'
- hisayaayofayiisayaayofaysisayaayofaytisayaayofayaisayaayofayyisayaayofayoisayaayofaynisayaayofaygisayaayofayeisayaayofayrisayaayofaylisayaayofayaisayaayofayyisayaayofayeisayaayofaynisayaayofaytisayaayofayeisayaayofaynisayaayofaycisayaayofayeisayaayofaysisayaayofayaisayaayofayyisayaayofayeisayaayofaydisayaayofayiisayaayofayuisayaayofaymisayaayofaymisayaayofayaisayaayofayyisayaayofayiisayaayofayfisayaayofayfisayaayofayiisayaayofaycisayaayofayuisayaayofaylisayaayofaytisayaayofayyisayaayofaydisayaayofayaisayaayofayy
+ isthay isway away ongerlay entencesay ofway ediummay ifficultyday
我很困惑,谢谢大家的帮助。
扬帆大鱼
料青山看我应如是
相关分类