2016-06-13 134 views
-1

我必须做一些将十六进制转换为二进制,并将它们与某个列表进行比较并显示结果。将一个列表与另一个列表进行比较并显示结果

转换的部分我已经做了,但是我正在努力进行比较的部分。

bitmap = input("inform your bitmap: ") 
h_size = len(bitmap)*4 
bitmap = (bin(int(bitmap,16))[2:]).zfill(h_size) 
str_bitmap = str(bitmap) 
for a,b in enumerate(str_bitmap): 
    print(a,b) 

输出:

inform your bitmap: 7a 
0 0 
1 1 
2 1 
3 1 
4 1 
5 0 
6 1 
7 0 

所以,我想,是1时,在枚举在这种情况下比较不同的列表,如:

1,2,3,4,6 (the 0,5,7 don't go because is 0) 

,并会检查从列表中并带来如下结果:

1 = bakery 
2 = banana 
3 = car 
4 = house 
5 = keyboard 
6 = mouse 

,最终结果如下:

bakery, banana, car, house, mouse 

这样做的方法是什么?

回答

0

你可以在一个字典中的字符串,然后使用列表理解来接他们,如果b == '1'

>>> str_bitmap = '01111010' 
>>> names = {1:'bakery', 2:'banana', 3:'car', 4:'house', 5:'keyboard', 6:'mouse'} 
>>> [names[a] for a, b in enumerate(str_bitmap) if b == '1'] 
['bakery', 'banana', 'car', 'house', 'mouse'] 
0

您打印基于当前列举的二进制数字对应的列表项:

bitmap = input("inform your bitmap: ") 
h_size = len(bitmap)*4 
bitmap = (bin(int(bitmap, 16))[2:]).zfill(h_size) 
str_bitmap = str(bitmap) 
items = [ 
    "", 
    "bakery", #1 
    "banana", #2 
    "car",  #3 
    "house", #4 
    "keyboard", #5 
    "mouse"  #6 
] 
for i,b in enumerate(str_bitmap): 
    if b == "1": 
     print(" {} = {}".format(i, items[i])) 

输出给出"7a"作为输入:

1 = bakery 
2 = banana 
3 = car 
4 = house 
6 = mouse 
相关问题