我在学校上 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']
1 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
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']。
添加回答
举报
0/150
提交
取消