解读CodeGrade中Python自动测试结果及代码问题排查
问题分析与解决
一、自动测试失败结果解读
这个测试用例的输入是"hello"和"world",系统预期的输出是elloorld\n(也就是两个单词去掉首字母后拼接的结果,加上print自动添加的换行符),但你的代码实际输出的是''\n(空字符串加换行),所以断言失败。其中:
- elloorld:代表系统预期的输出内容+ '':代表你的代码实际输出的内容
二、代码核心问题
你完全搞错了作业要求的逻辑!作业要的是去掉单词本身的首字母,但你的代码却在处理单词长度的字符串:
firstlength = len(firstword) firstlength = str(firstlength) firstword_minus = (firstlength[1:])
举个例子,当输入hello时,len(firstword)得到5,转成字符串是"5","5"[1:]切片后是空字符串;同理world的长度转成字符串切片后也是空,最后拼接起来自然是空字符串,这就是测试失败的原因。
三、修正后的代码
直接对原单词做切片操作即可,不需要处理长度:
firstword = input('Give me the first word: ') secondword = input('Give me the second word: ') firstword_minus = firstword[1:] secondword_minus = secondword[1:] print(firstword_minus + secondword_minus)
这样输入hello和world时,输出就是elloorld,完全符合测试预期,也不需要额外用repr()或str()——因为切片后的结果本身就是字符串。
四、如何读懂自动测试失败信息
- 第一行
inputs: "hello", "world":明确告诉你当前测试用的输入值是什么 assert "''\n" == 'elloorld\n':断言语句,左边是你的代码输出,右边是系统预期的输出,\n是print函数自动添加的换行符- 下方的
-和+行:-对应预期结果,+对应你的实际输出,直接对比就能看出内容差异
内容的提问来源于stack exchange,提问作者lunchbox_the_frog
相关产品推荐
相关产品推荐

