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

Python姓名首字母匹配功能的大小写与匹配逻辑问题修复

问题原因

原代码的匹配逻辑存在两个核心漏洞:

  • 没有限定字符匹配位置:只要目标字符出现在姓名的任意位置(不管是首字母还是中间字符,不管大小写)就会被判定为命中,比如输入S时,Negin Soleimani的姓首字母是S、Sina Ghahremani的名首字母是S、Masoud Jahani的名中间包含s,都会被错误匹配。
  • 没有拆分姓名结构:列表内所有姓名都是「名 + 空格 + 姓」的结构,原代码没有拆分名和姓,自然无法精准匹配名首字母、姓首字母的规则。
修复逻辑

按照需求调整匹配规则即可:

  • 对用户输入做去空格、转大写处理,兼容小写输入、误输入空格的场景
  • 遍历姓名时,先按空格拆分出独立的名和姓
  • 仅提取名的首字母、姓的首字母,统一转大写后和用户输入做精确比对,符合条件才输出姓名
修复后完整代码
names = ['Arsalan Ghasemi', 'Ali Bahonar', 'Negin Soleimani', 'Farzaneh Talebi', 'Sina Ghahremani',
         'Saman Sorayaie', 'Abtin Tavanmand', 'Masoud Jahani', 'Roya Pendar', 'Zeynab Arabi',
         'Amirhossein Tajbakhsh', 'Aria Irani']


def names_with_input(input1, input2):
    target_first = input1.strip().upper()
    target_last = input2.strip().upper()
    for full_name in names:
        first_name, last_name = full_name.split()
        # 仅匹配名首字母、姓首字母
        if first_name[0].upper() == target_first and last_name[0].upper() == target_last:
            print(full_name)

first = input('Enter first letter: ')
last = input('Enter last letter: ')

names_with_input(first, last)
效果验证
  • 输入A和G时,仅输出Arsalan Ghasemi,符合示例要求
  • 输入两个S时,仅输出Saman Sorayaie,解决原逻辑的多匹配问题
  • 输入小写字符(比如输入a和g)也能正常匹配,大小写兼容性正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:24:37