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

Codewars题目Is same case函数返回结果不符合预期问题求助

问题排查:函数返回结果不符合预期的原因

你的代码里存在一个极易忽略的细节错误——调用字符串的isupper()和islower()方法时忘记加括号了!

错误原因详解

在Python中,char.isupper只是引用了这个方法本身,而非执行它获取判断结果。方法对象在布尔上下文里会被视为True(因为它是一个真实存在的对象)。所以你的第一个判断条件:

if char1.isupper() and char2.isupper or char1.islower() and char2.islower:

当char1是大写(char1.isupper()返回True),char2.isupper作为方法对象也会被判定为True,整个条件直接成立并返回1,完全违背了你想要的大小写判断逻辑。

同理,后续条件里的char2.islower、char2.isupper也都犯了同样的错误,导致整个条件判断逻辑彻底失效。

修正后的代码

只需要给所有isupper和islower加上括号,让它们真正执行大小写判断,同时补充原代码遗漏的「非字母检查」逻辑(题目要求任意字符非字母时返回-1):

def is_same_case(char1, char2):
    # 先校验两个字符是否均为字母
    if not (char1.isalpha() and char2.isalpha()):
        return -1
    # 再判断大小写是否一致
    if char1.isupper() and char2.isupper() or char1.islower() and char2.islower():
        return 1
    else:
        return 0

# 测试你的案例
char1 = 'G'
char2 = 'a'
print(is_same_case(char1, char2))  # 现在会输出预期的0

验证测试

修正后的代码可以完美匹配所有题目要求的案例:

  • 输入'a'和'g' → 返回1
  • 输入'A'和'C' → 返回1
  • 输入'b'和'G' → 返回0
  • 输入'B'和'g' → 返回0
  • 输入'0'和'?' → 返回-1

内容的提问来源于stack exchange,提问作者GrainsGames

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:12:45