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

Python实现ExCamel函数遇NameError错误,求排查与修正

问题排查与代码修正方案

嘿,我来帮你搞定这个问题!首先咱们先拆解报错和代码里的问题,再给出能正确实现需求的代码。

第一个明显错误:变量名大小写不匹配

你定义的输入变量是InString(首字母大写),但在循环里写成了Instring(首字母小写)——Python是大小写敏感的语言,这两个会被识别成完全不同的变量,所以直接抛出了NameError。

不过除了这个问题,你的代码整体逻辑还有不少漏洞:比如ExCamel函数内部几乎是空实现,直接返回空字符串;字符处理的循环写在了函数外面,完全没用到函数的封装逻辑;还有upper()、lower()的调用方式错误(应该是字符串的实例方法,比如char.upper(),而非upper(char))。

修正后的完整代码

下面是完全实现需求的代码,我调整了结构并修复了所有问题:

def ExCamel(in_string):
    out_string = ""
    for idx, char in enumerate(in_string):
        # 遇到大写字母时,先加空格(非首字符的情况),再转小写
        if char.isupper():
            if idx != 0:
                out_string += " "
            out_string += char.lower()
        # 非大写字母直接转小写添加
        else:
            out_string += char.lower()
    return out_string

# 获取用户输入
input_str = input("Enter a statement: ")
# 调用函数并输出结果
print(ExCamel(input_str))

代码逻辑说明

  • 我把函数参数改成in_string(小写加下划线,符合Python命名规范),避免和全局变量混淆;
  • 用enumerate()遍历字符串,同时拿到字符索引和内容,方便判断是否为第一个字符(避免开头出现多余空格);
  • 使用char.isupper()判断字符是否为大写字母,比手动对比大小写更可靠;
  • 遇到大写字母时,先检查是否是首字符:非首字符先加空格,再转小写添加;非大写字母直接转小写添加;
  • 把输入获取、函数调用和函数实现分离,代码结构更清晰易维护。

测试示例:输入"HelloWorldThisIsCamelCase",会输出"hello world this is camel case",完全符合你拆分大写单词并转小写的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:44:08