如何将int(输入)转换为列表

时间:2016-12-15 22:00:06

标签: python python-3.x

来自此评论:

  

我的意思是如果用户输入“00000000”这是一个整数,它将变为[0,0,0,0,0,0,0,0]

我相信你想要的只是:

a = list(map(int, input("enter first byte: ")))
b = list(map(int, input("enter second byte: ")))

编辑:感谢Tadhg McDonald-Jensen的python3兼容性改变

edit2:由于你不能在列表上使用^,你可以使用这段代码:

a = input("enter first byte: ")
b = input("enter second byte: ")

def half_adder(a, b):
    S = ""
    c = ""
    for i in range(8):
        S += str(int(a[i]) ^ int(b[i]))
        c += str(int(a[i]) & int(b[i]))
    return (S,c)

def full_adder(a, b, c):
    (s1, c1) = half_adder(a, b)
    (s2, c2) = half_adder(s1, c)
    return (s2, (c1 or c2))

print(full_adder(a, b, "00000000"))

2 个答案:

答案 0 :(得分:2)

我认为这就是你所需要的:

>>> x=42
>>> list(map(int, "{:08b}".format(x)))
[0, 0, 1, 0, 1, 0, 1, 0]

格式字符串"{:08b}"表示:将整数转换为二进制的字符串,至少8位,0填充。

答案 1 :(得分:0)

来自此评论:

  

我的意思是如果用户输入" 00000000"这是一个整数,它将变为[0,0,0,0,0,0,0,0]

我相信你想要的只是:

a = list(map(int, input("enter first byte: ")))
b = list(map(int, input("enter second byte: ")))

编辑:感谢Tadhg McDonald-Jensen的python3兼容性改变

edit2:由于您无法在列表中使用^,因此您可以使用此代码:

a = input("enter first byte: ")
b = input("enter second byte: ")

def half_adder(a, b):
    S = ""
    c = ""
    for i in range(8):
        S += str(int(a[i]) ^ int(b[i]))
        c += str(int(a[i]) & int(b[i]))
    return (S,c)

def full_adder(a, b, c):
    (s1, c1) = half_adder(a, b)
    (s2, c2) = half_adder(s1, c)
    return (s2, (c1 or c2))

print(full_adder(a, b, "00000000"))