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

Python代码运行触发NameError错误,请求协助排查问题

问题排查与修复

直接触发NameError的原因

你的status变量存在未定义就被引用的情况:

  • 当输入字符串包含'h',但不满足后续'e'、'll'、'o'的检查条件时,内层的status = True不会执行,同时外层if 'h' in string的else分支也不会触发,导致status从头到尾没被赋值,执行到if status时就会抛出NameError。
  • 另外,代码里的for循环完全多余——循环内每次都是对整个字符串做重复检查,遍历每个字符没有任何实际作用,反而徒增逻辑混乱。

核心逻辑错误

你本来是想判断字符串是否包含顺序正确的"hello"序列,但当前写法完全偏离目标:

  • 'e' in string+'h'这种操作毫无意义,和直接检查'e' in string没区别,给字符串末尾加'h'不会改变原字符串里'e'的存在性。
  • 现有逻辑只是单独验证每个字符/子串是否存在,没有保证它们的出现顺序,比如输入"hlelo"会被误判为符合条件,但实际上"hello"的顺序不对。

修复方案

需求1:检查是否包含连续的"hello"

直接用Python的子串检查即可,简单高效:

string = input()
print('YES' if 'hello' in string else 'NO')

需求2:检查是否按顺序出现h→e→ll→o(无需连续)

比如输入"hxxezzlloo"也符合要求,可以用这种写法:

string = input()
target = 'hello'
pos = 0
for c in string:
    if pos < len(target) and c == target[pos]:
        pos += 1
print('YES' if pos == len(target) else 'NO')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:55:24