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

Python筛选大写开头姓名、统计小写开头数量的代码校验与优化

代码校验与优化方案

原有代码存在的问题

  • 判断规则不符合需求:当前用friends[num] != friends[num].lower()筛选姓名,本质是过滤掉「全小写」的姓名,不是严格筛选「首字母为大写」的姓名。如果遇到首字母小写、后续字符带大写的异常姓名(比如eMan),会被误判定为合规姓名打印出来。
  • 计数逻辑错误:统计小写姓名数量时额外减了1,公式len(friends) - len(arr)-1属于凑巧匹配了当前示例的结果,一旦列表中小写姓名数量变化,计算结果必然出错。
  • 实现冗余:先后用两次while循环遍历同一个列表,还额外创建空列表存储小写姓名,既拖慢运行效率,也增加了无意义的内存占用;手动维护循环索引的写法也很容易出现边界错误。

更简洁的实现思路

只需要遍历一次列表就能同时完成两个需求:遍历过程中遇到首字母大写的姓名直接打印,遇到首字母小写的姓名直接给计数器累加,遍历结束后直接输出计数结果即可,不需要多次循环、不需要额外存储列表。
优化后代码:

friends = ["Mohamed", "Shady", "ahmed", "eman", "Sherif"]
lower_start_count = 0

for name in friends:
    # 直接判断首字符是否为大写,不受名字其他位置字符的大小写影响
    if name[0].isupper():
        print(name)
    else:
        lower_start_count += 1

print(f"所有首字母大写的姓名已打印完成,小写开头的姓名总数量为 {lower_start_count}")

运行上述代码,针对你给出的示例列表,会依次打印Mohamed、Shady、Sherif三个大写开头的姓名,最后输出小写开头姓名数量为2,完全匹配需求。

内容的提问来源于stack exchange,提问作者Amira Mohamed Abdelsalam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:45:31