我正在学校上Python课,在做作业时,遇到了一些奇怪的事情。
如果我输入以0
开头的字符串,则表示列表创建不正确(下面的代码)。例如,如果我输入'000000'
作为输入,则会打印出['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']
答案 0 :(得分:3)
python-2中的input()
函数将输入作为python代码。这意味着要执行的结果为“ 00000”(因为将00000当作int且其值为0),所以将其执行为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中删除。 See here for docs referal
# python-2 interpreter
>>> max(0345, 344)
344 # since 345(of octal) in decimal number system is 229
这就是为什么000111被当做73
然后再被str()
对待的原因;它变成了list()
。