You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现同时兼容Python 2.x和3.x的输入功能?

解决Python 2/3兼容的输入问题

嘿,我来帮你搞定这个Python跨版本输入的麻烦!首先得搞清楚问题的根源:

  • 在Python 2里,input()会把用户输入的内容当作Python表达式执行,所以你输入test时,它会去找名为test的变量,找不到就报NameError;而真正用来获取纯字符串输入的是raw_input()
  • 在Python 3里,input()直接替代了Python 2的raw_input(),就是用来获取纯字符串的。

你之前尝试的'"' + input('input: ') + '"'方法没用,是因为Python 2里的input()会先执行你输入的内容,还没到拼接引号的步骤就已经报错了。

下面给你两种简单可靠的兼容方案:

方案1:通过版本判断定义兼容的input函数

直接在脚本开头加这段代码,之后就可以统一用input()获取字符串了:

import sys

if sys.version_info[0] == 2:
    input = raw_input
else:
    input = input

方案2:用try-except捕获NameError(更简洁)

这种方式不用判断版本,直接利用Python 3中不存在raw_input的特性:

try:
    # Python 2中存在raw_input,把input替换成它
    input = raw_input
except NameError:
    # Python 3中没有raw_input,什么都不用做,保持input原样
    pass

测试效果

加了上面任意一段代码后,在Python 2里运行:

>>> a = input('Input: ')
Input: test
>>> a
'test'

完全不用手动加引号,就能正常获取输入的字符串,Python 3里的使用方式和原来一样,完美兼容两个版本!

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

火山引擎 最新活动