调用自定义函数时触发NameError,脚本无法运行求助
调用自定义函数时触发NameError,脚本无法运行求助
嘿,我来帮你看看问题出在哪~ 你遇到的这个NameError其实是Python里新手最常踩的坑之一,咱们一点点捋清楚:
首先看报错信息里的NameError: name 'yes' is not defined,核心问题特别明确:你在调用dictionary(yes)的时候,把yes当成变量来用了,但你根本没定义过这个变量啊!你其实是想把**字符串"yes"**传进函数里,对吧?
再仔细扒扒你写的代码,还有几个逻辑小问题:
- 函数里的
if x == yes:这里的yes同样是未定义的变量,你应该和字符串"yes"做比较,不是裸写yes yes = print("verbal agreement, consent")这行完全多余,print()函数执行后就会直接输出内容,而且它的返回值是None,你把它赋值给变量再打印,最后只会多输出一个None,纯纯的画蛇添足。
给你改好了可以正常运行的代码,你瞅瞅:
def dictionary(x): # 把比较对象改成字符串"yes",和传入的参数匹配 if x == "yes": # 直接打印定义内容就行,不用绕弯子赋值 print("verbal agreement, consent") # 调用函数时要传字符串"yes",记得用引号包起来! dictionary("yes")
另外,如果你想做一个真正能用的字典工具,其实用Python自带的字典类型会更方便,代码也更简洁,给你个示例参考:
# 先定义好单词和对应定义的字典 word_dictionary = { "yes": "verbal agreement, consent", "hello": "greeting used to address someone", "python": "a high-level programming language" } def lookup_word(x): # 用get方法可以处理单词不存在的情况,返回自定义提示 print(word_dictionary.get(x, "抱歉,这个单词我还没收录哦!")) # 调用试试 lookup_word("yes") lookup_word("hello") lookup_word("test")
这样是不是清晰多啦?你之前试的=/==/:=那些操作,其实和这次的报错没关系,主要是没搞清楚变量和字符串字面量的区别~
备注:内容来源于stack exchange,提问作者Ben Miller
相关产品推荐
相关产品推荐

