Python Minion Game代码HackerRank测试用例失败及输出方式疑问
The Minion Game 问题解答
你的代码
def minion_game(string): vowels = 'AEIOU' kevin = 0 stuart = 0 n = len(string) for i in range(n): if string[i] in vowels: kevin += n - i else: stuart += n - i if kevin > stuart: winner = "Kevin" score = kevin elif kevin < stuart: winner = "Stuart" score = stuart else: winner = "Draw" score = kevin print(winner, score) if __name__ == '__main__': s = input() minion_game(s)
问题背景
The Minion Game规则:Kevin使用以元音开头的子串、Stuart使用以辅音开头的子串,每个子串出现一次得1分。
疑问解答
1. return返回报错,print通过的原因
HackerRank的判题系统通过**捕获标准输出(控制台打印内容)**验证结果。return返回的结果仅在函数内部传递,不会输出到控制台,系统无法获取有效结果,因此报错;print语句会将结果直接输出到标准输出,系统能捕获到该内容,所以可通过测试。
2. 部分测试用例失败的原因
你的代码中元音仅定义为大写的'AEIOU',但HackerRank的测试用例可能包含小写字母输入(如全小写或混合大小写的字符串)。此时小写元音(如'a'、'e')不会被识别为元音,会被错误计入Stuart的分数,导致最终得分和结果错误。
解决方法:
- 将元音集合改为包含大小写:
vowels = 'AEIOUaeiou' - 或处理前将输入字符串统一转为大写(或小写):
string = string.upper()
内容的提问来源于stack exchange,提问作者user3521180
相关产品推荐
相关产品推荐

