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

如何在给定Python程序中按性别分类并将姓名按字母顺序打印

解决方案

原代码存在以下可优化/问题点:

  • 滥用exec执行动态代码存在安全风险,且逻辑冗余
  • 打印女性列表时错误使用男性列表的长度作为循环边界,男女数量不一致时会触发索引越界报错
  • 缺少对姓名按字母排序的逻辑

修改后可运行代码
n = int(input())
f = []
m = []

for i in range(n):
    temp = input()
    tmplst = temp.split(".")
    # 若需要保留原代码的打印动态语句逻辑,可放开以下两行注释
    # str = f"{tmplst[1]} = ({','.join(repr(i) for i in tmplst)})"
    # print(str)
    if tmplst[0] == "m":
        m.append(tmplst)
    elif tmplst[0] == "f":
        f.append(tmplst)

# 按姓名字段(列表索引1位置)做字母升序排序
f.sort(key=lambda x: x[1])
m.sort(key=lambda x: x[1])

# 打印女性名单
for item in f:
    print(item[0], item[1].capitalize(), item[2])

# 打印男性名单
for item in m:
    print(item[0], item[1].capitalize(), item[2])

关键改动说明
  • 移除了所有exec相关逻辑,直接将拆分后的信息存入对应性别列表,代码更安全简洁
  • 增加排序步骤:通过sort()方法指定姓名为排序关键字,默认按英文字母升序排列,符合需求
  • 修正了循环打印逻辑,直接遍历列表本身,完全避免索引越界问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:15:00