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

Python从全名提取名字代码校验失效、空输入报错如何解决

Python姓名提取代码问题修复方案

你的代码存在以下几处逻辑和语法错误:

  • input() 函数的返回值永远为字符串类型,type(name) == str 判断会覆盖所有输入场景,导致后续判断 name == 'end' 的分支永远不会被触发
  • 空输入(直接按回车)时,name.split() 会返回空列表,直接取下标 [0] 会触发 IndexError 索引越界报错
  • break 关键字只能在循环/switch分支内使用,直接写在普通函数中会触发语法错误
  • 缺少循环逻辑,程序只能执行一次,无法实现「输入end终止」的效果
  • 单独写 name.split() 没有赋值,属于无效代码,不会改变原变量的值

修复后完整代码

def print_first_name(name):
    # 优先处理终止条件
    if name.strip() == 'end':
        return False
    # 处理空输入、全空格输入场景
    name_parts = name.strip().split()
    if not name_parts:
        print('You must enter at least your first name!')
        return True
    # 正常提取名字输出
    first = name_parts[0]
    print('Your first name is: ', first)
    return True

# 主循环实现持续输入直到触发终止
while True:
    input_name = input("Enter your full name (end to stop): ")
    if not print_first_name(input_name):
        break

逻辑说明

修复后的代码完全匹配预期需求:

  • 直接回车、输入全空格时,会触发有效姓名提示
  • 输入end时自动终止程序
  • 正常输入全名时会正确提取第一个名字输出
  • 规避了索引越界、break语法错误、全局变量滥用等问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:09:00