Python 3.x中整数前导零引发语法错误的原因及解决方案咨询(初学者适用)
你的Python前导零报错问题:原因、解决办法+基础概念科普
嘿,作为编程初学者碰到这个问题太正常啦!我给你讲得明明白白的~
为啥会出现这个报错?
你写的07是带前导零的数字,但Python 3以后禁止在十进制整数前面加前导零,原因很简单:
- 在编程里,前导零原本是用来标记八进制数的(八进制是基数为8的计数系统,只有0-7这8个数字)。比如早年Python 2里,
07会被当成八进制的7,但如果写010就会被当成八进制的10,转成十进制就是8——这很容易搞混! - 为了避免这种「不小心加个零就改变数字意义」的坑,Python 3干脆把这个语法禁用了,要求必须用
0o(注意是小写字母o,不是数字0)作为八进制数的前缀,这样一眼就能看出来这不是十进制数。
对应的解决办法
分两种情况处理:
- 如果你本来就是想写十进制的7:直接把前面的零删掉就行,这是最常见的情况:
运行后就会正常输出fav_number = 7 print("My favourite number is:", fav_number)My favourite number is: 7。 - 如果你确实需要表示八进制数:那就加上
0o前缀,比如:fav_number = 0o7 print("My favourite number is:", fav_number) # 输出十进制的7 print("My favourite number (octal):", oct(fav_number)) # 输出八进制格式的'0o7'
补充基础概念:不同进制的数字在Python里的写法
编程里除了十进制,还有几种常用进制,Python都有明确的前缀规则:
- 十进制:日常用的数字,0-9,直接写,比如
7、123。 - 八进制:基数8,数字0-7,前缀
0o,比如0o10对应十进制的8。 - 十六进制:基数16,数字0-9+a-f(大小写都行),前缀
0x,比如0x10对应十进制的16。 - 二进制:基数2,数字0和1,前缀
0b,比如0b10对应十进制的2。
内容的提问来源于stack exchange,提问作者viveooo
相关产品推荐
相关产品推荐

