python - 使用 'str' 时,我的按位程序出现 'int' 和 'input' TypeError

标签 python string integer bitwise-operators bitwise-and

这个简单的程序检查用户提供的整数中的第 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/

相关文章:

python - 如何拆分整数并将部分分配给变量

c++ - 使用字符串操作截断整数?

Python加入子进程

python - 已完成的抓取电子邮件文件

python - 如何在不实例化类的情况下获取类成员的完整列表?

javascript - javascript 中使用正则表达式的 String.replace 方法

string - Swift如何从字符串中获取整数并将其转换为整数

python - 使用 pytest 动态参数化类级固定装置

c# - 如何将这个 "Tuesday, March 30, 2010 10:45 AM"字符串实际转换为 DateTime?

java - 在Java中将字符数组转换为字符串