语法错误:不允许在十进制整数文字中使用前导零

SyntaxError: 不允许在十进制整数文字中使用前导零

SyntaxError: leading zeros in decimal integer literals are not permitted

当我们声明一个带有前导零的整数时,会出现 Python“SyntaxError: leading zeros in decimal integer literals are not permitted”。

要解决该错误,请从整数中删除任何前导零或将值包装在字符串中。

十进制整数文字中的语法错误前导零

下面是错误如何发生的示例。

主程序
# ⛔️ SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers my_num = 08

整数文字中的前导零

在 Python 中,整数中不允许有前导零。

从整数中删除前导零

解决错误的一种方法是删除所有前导零。

主程序
my_num = 8 print(my_num) # 👉️ 8

从整数中删除前导零解决了这个问题。

主程序
# ⛔️ causes error my_num = 007 # -------------------------------- # ✅ works as intended my_num = 7

数字不能以前导零开头,将包含前导零的字符串转换为数字会自动删除前导零。

主程序
my_str = '0007' my_int = int(my_str) print(my_int) # 👉️ 7

0在 Python 中唯一可以以整数开头的是0它本身。

主程序
my_int = 0 print(my_int) # 👉️ 0

将值包裹在字符串中以解决错误

或者,您可以将值包装在字符串中。

主程序
my_num = '08' print(my_num) # 👉️ '08'

当值用引号引起来时,它是一个字符串并且可以以前导零开头。

格式化带有前导零的字符串

如果需要用前导零将值填充到特定长度,则可以使用
格式化字符串文字。

主程序
my_int = 7 result = f'{my_int:03}' print(result) # 👉️ 007 result = f'{my_int:04}' print(result) # 👉️ 0007 result = f'{my_int:05}' print(result) # 👉️ 00007

如果您需要将整数列表格式化为 N 个前导零,请使用列表理解。

主程序
a_list = [3, 5, 7, 9] new_list = [f'{item:03}' for item in a_list] print(new_list) # 👉️ ['003', '005', '007', '009']

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

格式化字符串文字 (f-strings) 让我们通过在字符串前加上f.

主程序
var1 = 'bobby' var2 = 'hadz' result = f'{var1}{var2}' print(result) # 👉️ bobbyhadz

确保将表达式括在大括号 – 中{expression}

格式化字符串文字还使我们能够在表达式块中使用
格式规范迷你语言

冒号后的0是填充字符。

主程序
my_int = 7 result = f'{my_int:03}' print(result) # 👉️ 007

如有必要,示例将字符串填充到长度为 3、4 或 5 的前导零。

如果字符串已经达到指定长度,则不添加前导零。

用引号包裹字典键或列表元素

这同样适用于字典键和列表项。

主程序
# ⛔️ SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers my_dict = {04: 'hi'} # ⛔ ️SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers my_list = [01, 02]

您可以将字典键包装在一个字符串中或删除前导零。

主程序
my_dict = {'04': 'hi'} print(my_dict['04']) # 👉️ 'hi'

如果列表元素以前导零开头,请确保将所有列表元素用引号引起来。

主程序
my_list = ['01', '02'] print(my_list[0]) # 👉️ '01' print(my_list[1]) # 👉️ '02'

创建八进制文字

如果您打算指定八进制文字,请在其前面加上前缀0o

主程序
example_1 = 0o72 print(example_1) # 👉️ 58 example_2 = 0o73 print(example_2) # 👉️ 59

八进制表示法以8rather than10作为基数。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: