为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

叮当猫咪 2021-09-28 15:20:09
我在学校上 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']。


查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信