最新消息:VPS服务器又从fzhost.net换回Linode了,主题仍用朋友推荐的大前端D8

【已解决】Python中使用raw_input,结果出现NameError错误 + raw_input和input之间的区别

Python crifan 1311浏览 0评论

【问题】

参考:

python编程input与raw_input

在python中使用如下代码:

        inputCode = input("The captcha (verify code) is ?");
        print "inputCode=",inputCode;

结果输入字符串rdrk后,出现NameError的错误:

The captcha (verify code) is ?rdrk
LINE 1629 : ERROR    Unknown Error !
Traceback (most recent call last):
  File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py", line 1627, in <module>
    main();
  File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py", line 1432, in main
    processSinglePost(infoDict);
  File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py", line 625, in processSinglePost
    (modifyOk, errInfo) = modifySinglePost(newPostContentUni, infoDict, gCfg);
  File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py", line 1603, in modifySinglePost
    return callBlogFunc(modifySinglePost, newPostContentUni, infoDict, inputCfg);
  File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress\BlogsToWordpress.py", line 1496, in callBlogFunc
    return trueFunc(paraList[0], paraList[1], paraList[2]);
  File "D:\tmp\WordPress\Others\to_wp\BlogsToWordpress\BlogsToWordpress\BlogNetease.py", line 1311, in modifySinglePost
    inputCode = input("The captcha (verify code) is ?");
  File "<string>", line 1, in <module>
NameError: name 'rdrk' is not defined

【解决过程】

1.后来参考:Python raw_input 读取输入值去改为:

inputCode = str(input("The captcha (verify code) is ?"));

问题依旧。

2.后来也看到了:python input()和raw_input()中的关于raw_input和input的区别,即对于input的话,如果需要输入字符串,应该加上引号,而raw_input则不需要,可以直接输入字符串,即可。

但是此处我就是用的raw_input的话,结果还是出现了和

使用input字符串没加引号而出现的NameError的错误

然后试了试:

        inputCode = '';
        inputCode = input("The captcha (verify code) is ?");
        #inputCode = str(input("The captcha (verify code) is ?"));

问题依旧。

3. 又试了:

        inputCode = '';
        #inputCode = input("The captcha (verify code) is ?");
        inputCode = str(input("The captcha (verify code) is ?"));

问题依旧。

4.刚刚发现,原来是自己脑子不好使,没看清自己其实就是用的input,而不是raw_input,因此导致上面的错误的。。。

改为raw_input,就可以了:

        #inputCode = input("The captcha (verify code) is ?");
        inputCode = raw_input("The captcha (verify code) is ?");
        print "inputCode=",inputCode;

正常输出为:

The captcha (verify code) is ?askdg
inputCode= askdg

【总结】

Python中的

raw_input只保留原始的输入,不作其他(特殊)处理,所以所得到的输入,都是字符串

input:会去做额外的处理,比如 1 + 2,其会帮你去计算为3,而不是字符串本身的“1 + 2”。对应的,想要输入字符串的话,也就要自己加上对应的引号,表示所输入的是字符串类型的值了。

转载请注明:在路上 » 【已解决】Python中使用raw_input,结果出现NameError错误 + raw_input和input之间的区别

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
15 queries in 0.207 seconds, using 10.35MB memory