问题描述
>>> x = 1101 ^ 0111
File "<stdin>",line 1
x = 1101 ^ 0111
^
语法错误:令牌无效
为什么我在 python 中收到这个语法错误?我在网上看到,“^ 按位互斥异或 描述 返回两个整数按位异或的结果。
语法 A^B
A 整数对象。 乙 整数对象。”
所以我想我使用了两个整数。
解决方法
1101
和 0111
应该是位吗?要表示位文字,您应该使用 0b1101
和 0b0111
,否则这些都是整数(并且整数不能以 0
首先,您不能以这种方式使用整数。这是我运行您的代码时遇到的错误:
SyntaxError: leading zeros in decimal integer literals are not permitted;
use an 0o prefix for octal integers
换句话说,你不能给 Python 一个以零开头的整数。这曾经在 Python 2 中工作,但在 Python 3 中不再支持。(参见 https://stackoverflow.com/a/11620174/7583007)
我假设您正在尝试使用二进制数?如果是这样,你应该试试这个:https://stackoverflow.com/a/19414115/7583007
,我相信你想要:
0b1101 ^ 0b0111
通常,您收到的错误是因为您在数字前放置了一个“0”,这是 python 不允许的。如果您尝试这样做,也会发生同样的情况:
078
数字的开头以零开头,通常是特殊的 Python 代码,表示您将提供二进制数、八进制数或十六进制数,它们分别以 0b、0o 或 0x 开头。