number = input(u'输入号码:\n'.encode('utf-8'))
#number = "%03d"%number
num_list = list(str(number))
num_list = [int(num_list[i]) for i in range(len(num_list))]
print num_list
代码如上,输入其他数字还行。都能正常print出来
但是如果首位是0 。 比如输入“046”,那会打印出来[3,8]
请问这是什么原因
number = input(u'输入号码:\n'.encode('utf-8'))
#number = "%03d"%number
num_list = list(str(number))
num_list = [int(num_list[i]) for i in range(len(num_list))]
print num_list
代码如上,输入其他数字还行。都能正常print出来
但是如果首位是0 。 比如输入“046”,那会打印出来[3,8]
请问这是什么原因
input([prompt])
Equivalent to eval(raw_input(prompt)).
input
方法相对于 eval(输入内容)
,如果只是想获取输入字符串,用 raw_input()
更好
python2.* 中,0 开头的表示 8 进制,38 是转换为 10 进制的结果
python3.* 中,8进制已经改为 0o 开头了,所以不会装换
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
你用的应该是python2.7。
把input方法替换成raw_input。
因为input实际执行的是eval(raw_input(prompt)),会导致输入的字符串046被执行,其0开头被识别为8进制数,转换成10进制后为038。
所以使用raw_input后得到字符串u'046'就可以了