You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何函数功能正常但单元测试返回错误布尔值?

问题分析与解决

问题根源

你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:20:32