当我的程序使用位输入时出错

2024-09-30 18:15:18 发布

您现在位置:Python中文网/ 问答频道 /正文

这个简单的程序检查用户提供的整数中的第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)
^{pr2}$

Tags: 函数字符串程序returnbin检查用户check错误
2条回答

这是因为bin(x)返回一个字符串
参考号:https://docs.python.org/3/library/functions.html#bin

因此,在上面的行中,您尝试&;(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(..)bin(..)不把整数转换成二进制等价的,int已经存储为二进制。它构造了一个整数的表示(这是一个可以读取的东西),并将0和1作为字符串。事实上:

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

因此,您可以简单地使用:

^{pr2}$

在你的函数中,你写了0b00001000,但这也是一个整数:如果你直接写8,那就没什么区别了。在

相关问题 更多 >