这个简单的程序检查用户提供的整数中的第 4 位是否已打开。您提供一个数字(例如 12),然后它将从字符串转换为整数,然后从 base10 转换为二进制。但是,尽管进行了 int()
和 bin()
转换,我仍然收到一条错误消息,指出 &
不能用于 ' str' 和 'int'。
据我了解 int()
和 bin()
函数,用户提供的数字在传递给 check_bit4 时应该是按位整数()
函数。我错过了什么?
def check_bit4(x):
check = 0b00001000
if x & check > 0:
return("on")
else:
return("off")
x = bin(int(input("Enter Integer ")))
check_bit4(x)
File "Problem3.py", line 3, in check_bit4
if x & check > 0:
TypeError: unsupported operand type(s) for &: 'str' and 'int'
最佳答案
没有理由使用 bin(..)
。 bin(..)
不会将整数转换为等效的二进制数,int 已经存储为二进制数。它构造一个整数的表示(人 可以阅读的东西)作为字符串的 0 和 1。确实:
>>> type(bin(1425))
<class 'str'>
所以你可以简单地使用:
x = int(input("Enter Integer ")) # look ma, no bin(..)
check_bit4(x)
在您的函数中,您编写了 0b00001000
但这也是一个整数:如果您直接编写 8
,那不会有什么不同。
关于python - 使用 'str' 时,我的按位程序出现 'int' 和 'input' TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45257877/