List() 函数不会将字符串转换为预期的列表

我在学校上 Python 课,在做家庭作业时,我遇到了一些奇怪的事情。


如果我给出一个以 开头的字符串0作为输入,则列表创建不正确(下面的代码)。例如,如果我'000000'为 input 提供,['0']则打印出来而不是['0', '0', '0', '0', '0', '0']. 此外,如果我'000111'作为输入给出,则['7', '3'] 打印出来。创建的列表不是预期的,是否有原因?如果有帮助,代码将在 Python 2.7.10 版的 Repl.it 上运行。


variable = list(str(input('')))

print(variable)

我期待输入输出'000000'是['0', '0', '0', '0', '0', '0'],但实际产量['0']


叮当猫咪
浏览 146回答 1
1回答

宝慕林4294392

input()python-2 中的函数将输入作为 python 代码。这意味着 '00000' 已作为 0 执行(因为 00000 被视为 int 并且其值为 0)。因此,您应该考虑使用 raw_input() 而不是 input()。>>> var = list(str(raw_input("")))00000>>> print(var)['0', '0', '0', '0', '0']好吧,对于 python-3,没有 raw_input(); 这样的东西。因为 input() 取代了它。还; 在python-2中;不允许带有前导零的非零十进制数。因为它们被视为八进制数,因此被转换为十进制数系统。这个东西在python的第3版中被删除了。 请参阅此处获取文档参考# python-2 interpreter>>> max(0345, 344)344    # since 345(of octal) in decimal number system is 229这就是为什么 000111 被当作73然后当你这样做str()然后list()在它上面的原因;它变成了['7','3']。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python