为何函数功能正常但单元测试返回错误布尔值?
问题分析与解决
问题根源
你的turn_clockwise函数没有返回值,仅通过print输出结果。Python中,无return语句的函数默认返回None。当执行print(turn_clockwise('N')=='E')时,实际是在比较None == 'E',结果必然为False;同时函数会先执行内部的print('E'),这就是你看到两次E输出的原因(一次是用户输入后的函数调用,一次是测试时的函数调用)。
修复代码
将函数内的print替换为return,让函数返回对应方向的字符串,这样才能用于后续的比较判断:
def turn_clockwise(x): if x == 'N': return 'E' elif x == 'E': return 'S' elif x == 'S': return 'W' elif x == 'W': return 'N' else: return 'Input is not a compass point.' user_input = input('Enter a compass point: ') # 打印用户输入对应的旋转结果 result = turn_clockwise(user_input) print(result) # 验证函数返回值 print(turn_clockwise('N') == 'E') # 此时会输出True
修复后效果
- 用户输入
N时,会先打印E(用户输入的结果),然后测试语句会返回True - 函数的返回值可以正常用于逻辑判断,不会再出现
None与字符串比较的错误
内容的提问来源于stack exchange,提问作者phamj0
相关产品推荐
相关产品推荐

