2015-11-03 95 views
-2

我怎麼能二進制數字追加到最終的變數在Python如何追加加入二進制數字給一個變量

a = self.allcheckboxes[0].isChecked() # 1 
b = self.allcheckboxes[1].isChecked() # 0 
c = self.allcheckboxes[2].isChecked() # 1 
d = self.allcheckboxes[3].isChecked() # 0 

final_value = 010+a+b+c+d 
# iam expecting something like 0101010 in binary 

回答

2

我假設你只想要一個二進制尋找字符串,而不是一個與相關位整數設定,如果是的話,你可以使用複選框10至14以下:

final_value = ''.join('1' if checkbox.isChecked() else '0' for checkbox in self.allcheckboxes[10:15]) 

這然後可以轉換爲整數,如果需要印刷爲十六進制如下:

integer_value = int(final_value, 2) 
print '{:x}'.format(integer_value) 
+0

我有26個複選框,但我只想從self.allcheckboxes [10-14]的值,我怎麼能改變它? –

+0

FWIW,我想條件表達式更具可讀性,但'01'[checkbox.isChecked()]'更短。 :) –

+0

,幫助我,現在我可以通過使用'打印十六進制(fianl_value)' –

0

您可以使用operator.itemgetteroperator.attrgettermap函數中做的所有代碼在一個行,使用str.join()加入結果:

from operator import itemgetter,attrgetter 
''.join(map(attrgetter('isChecked'),itemgetter(0,1,2,3)(self.allcheckboxes))) 

還要注意,在Python中沒有二進制類型,當你的連接字符串,根據你的目標和你所撥打的功能,你可以TREA d將此字符串作爲二進制數字。

例如,如果你想通過傳遞2作爲其基地將其轉換爲整數,您可以使用int功能:

>>> int('0101',2) 
5