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
相关产品推荐
相关产品推荐

