Python I';我得到一个';str';和';int';使用';时,我的按位程序上的TypeError;输入';

Python I';我得到一个';str';和';int';使用';时,我的按位程序上的TypeError;输入';,python,string,integer,bitwise-operators,bitwise-and,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 >

这个简单的程序检查用户提供的整数中的第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)
文件“Problem3.py”,第3行,检查第4位
如果x检查>0(&C):
TypeError:&:'str'和'int'的操作数类型不受支持

没有理由使用
bin(..)
bin(..)
不将整数转换为二进制等价物
,整数已存储为二进制。它构造了一个以0和1为字符串的整数的表示法(一个人可以读取)。事实上:

>>> type(bin(1425))
<class 'str'>

在函数中,您写入
0b00001000
,但这也是一个整数:如果您直接写入
8
,则不会产生任何影响。

没有理由使用
bin(…)
bin(..)
不将整数转换为二进制等价物,整数已存储为二进制。它构造了一个以0和1为字符串的整数的表示法(一个人可以读取)。事实上:

>>> type(bin(1425))
<class 'str'>

在函数中,您写入
0b00001000
,但这也是一个整数:如果您直接写入
8
,则不会产生任何影响。

好吧,这是因为bin(x)返回一个字符串 参考:

因此,在上面的一行中,您试图&(and)字符串和int,这会导致错误。
因此,在使用&(and)运算符之前,我们需要将字符串转换为int

我建议您直接在输入号码上使用&(and)运算符,而不是这些繁琐的任务

def check_bit4(x):
    check = 8  #decimal representation of 0b00001000
    if x & check:  #if condition will be true if the answer is non zero
        return("on")
    else:
        return("off")

x = int(input("Enter Integer "))
print(check_bit4(x))

我希望这能解决您的问题:)

好吧,这是因为bin(x)返回一个字符串 参考:

因此,在上面的一行中,您试图&(and)字符串和int,这会导致错误。
因此,在使用&(and)运算符之前,我们需要将字符串转换为int

我建议您直接在输入号码上使用&(and)运算符,而不是这些繁琐的任务

def check_bit4(x):
    check = 8  #decimal representation of 0b00001000
    if x & check:  #if condition will be true if the answer is non zero
        return("on")
    else:
        return("off")

x = int(input("Enter Integer "))
print(check_bit4(x))

我希望这能解决您的问题:)

bin(..)
将int转换回字符串(使用
'0'
s和
'1'
s)。所有数字都以二进制格式存储在内部(在最低级别),因此可以在
int
上直接执行位操作,例如
,而无需进行任何转换。
bin(..)
将整数转换回字符串(使用
'0'
s和
'1'
s)。所有数字在内部以二进制格式存储(在最低级别),因此可以直接对
整数执行位操作,例如
&
,而无需进行任何转换。