Python I';我得到一个';str';和';int';使用';时,我的按位程序上的TypeError;输入';
这个简单的程序检查用户提供的整数中的第4位是否打开。您提供一个数字(例如12),然后它将从字符串转换为整数,然后从base10转换为二进制。然而,尽管进行了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 >
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)。所有数字在内部以二进制格式存储(在最低级别),因此可以直接对整数执行位操作,例如&
,而无需进行任何转换。