为何所有字母仅被添加至列表a?需实现大小写字母分列表存储
代码问题排查与修复
问题原因
原代码的核心错误在于判断逻辑完全错误:
if i.upper()这个条件永远为真,因为任何非空字符调用upper()都会返回非空字符串,而Python里非空字符串在布尔判断中等价于True。这导致所有字母都会被塞进列表a,elif i.islower()分支根本不会触发。- 要实现需求,必须用
isupper()方法判断字符本身是否为大写字母,用islower()判断是否为小写字母。
修复后的代码
def up_low(s): a = [] b = [] for i in s: if i.isupper(): a.append(i) elif i.islower(): b.append(i) else: pass print(a) print(b) print(f"No. of Upper case characters : {len(a)} ") print(f"No. of Lower case Characters : {len(b)}")
验证效果
测试输入:up_low("Hello World! 123")
输出结果:
['H', 'W'] ['e', 'l', 'l', 'o', 'o', 'r', 'l', 'd'] No. of Upper case characters : 2 No. of Lower case Characters : 8
完全符合预期:大写字母进入列表a,小写字母进入列表b,非字母字符被忽略。
内容的提问来源于stack exchange,提问作者geetansh pardhi
相关产品推荐
相关产品推荐

