我將如何做if/else語句,其中if檢查變量8位變量是否是二進制的? 我知道如何做8位數字部分(len()),但我不能解決如何將它限制爲1和0。Python:檢查一個變量是二進制的
0
A
回答
0
是編碼爲字符串還是整數數組的變量?你可以做一個列表理解來檢查每個元素,其他解決方案也是可能的。
isBinary=[x==1 or x==2 for x in variable]
isBinary=False in isBinary
0
你可以試着和int
解析它們同時傳遞一個基數是這樣的:
>>> x = int("10010", 2)
>>> print x
18
2
要確認字符串包含正好8的1和0測試它的正則表達式
^[01]{8}$
使用示例:
import re
isBin = re.compile('^[01]{8}$')
s1 = "00110101"
if(s1.match(isBin)):
print "it is a match"
else:
print "it is not a match"
1
您可以使用generator expression和all
*:
if len(var) == 8 and all(x in "01" for x in var):
...
下面是一個演示:
>>> var = "01010101"
>>> len(var) == 8 and all(x in "01" for x in var)
True
>>> var = "0101010"
>>> len(var) == 8 and all(x in "01" for x in var)
False
>>> var = "01010102"
>>> len(var) == 8 and all(x in "01" for x in var)
False
>>>
*注:上面的代碼假定var
是一個字符串。
0
可以使用all()
function測試每個字符:
len(var) == 8 and all(c in '01' for c in var)
或使用set:
binary_digits = set('01')
len(var) == 8 and binary_digits.issuperset(var)
import re
binary_digits = re.compile('^[01]{8}$')
binary_digits.match(, var) is not None
這三個選擇中,正則表達式選項是最快的,接下來是使用set:
>>> import re
>>> import timeit
>>> def use_all(v): return len(v) == 8 and all(c in '01' for c in v)
...
>>> def use_set(v, b=set('01')): return len(v) == 8 and b.issuperset(v)
...
>>> def use_re(v, b=re.compile('^[01]{8}$')): return b.match(v) is not None
...
>>> binary, nonbinary = '01010101', '01010108'
>>> timeit.timeit('f(binary); f(nonbinary)', 'from __main__ import binary, nonbinary, use_all as f')
4.871071815490723
>>> timeit.timeit('f(binary); f(nonbinary)', 'from __main__ import binary, nonbinary, use_set as f')
2.558954954147339
>>> timeit.timeit('f(binary); f(nonbinary)', 'from __main__ import binary, nonbinary, use_re as f')
2.036846160888672
0
我打算假設你也想在某個時刻將字符串轉換爲整數。如果情況並非如此,請糾正我。
在Python中,通常認爲嘗試做某件事情會更好,如果發生則處理失敗;而不是檢查是否有可能,只有這樣做。這就是所謂的EAFP原則(它比容許更容易要求寬恕)。
在這種情況下,你應該使用try
except
:
s = '01100011'
if len(s) == 8:
try:
n = int(s, 2)
except ValueError:
handle_exception_here()
相關問題
- 1. 二進制變量變量
- 2. Python:檢查一個變量是否是一個字典
- 3. 二進制搜索Python拼寫檢查
- 4. Rails:可能檢查一個字符串是二進制的嗎?
- 5. 檢查變量,得到下一個變量,檢查變量等
- 6. 檢查二進制引用
- 7. 檢查一個變量是否爲空
- 8. 檢查,如果一個變量是空
- 9. 檢查一個變量是否爲SRE_Match
- 10. R:將多個二進制列轉換爲一個因子變量,其因子是二進制列名
- 11. 如何檢查是否一個變量是JavaScript的一個blob
- 12. Python 3如何檢查一個變量是否在列表中
- 13. 檢查的變量在python
- 14. 如何檢查一個十六進制數是否等於一個特定的二進制數?
- 15. 有沒有辦法來檢查一個Ruby變量是否包含二進制數據?
- 16. 檢查一個變量是否是時間不變的R
- 17. 二進制數表示在c中的一個長變量#
- 18. 如何檢查變量是否在python
- 19. 如何檢查一個變量是否在bash中是一個有效的十六進制顏色
- 20. 二進制訪問變量二進制位 - Erlang
- 21. 如何檢查一個變量是否是一個整數?
- 22. 檢查變量是否小於另一個變量
- 23. 檢查許多變量是如何存儲在一個變量
- 24. PHP:檢查一個變量是否是某個類的實例
- 25. 檢查位狀態的二進制
- 26. 檢查Golang中的二進制存在
- 27. 檢查是否變量是一定值
- 28. 二進制數字。錯誤時檢查確保二進制輸入是二進制
- 29. 是否有一個MSBuild和TFSBuild變量指向二進制文件的位置?
- 30. 檢測二進制列向量中的變化
你的意思是一個_String_變量只包含一和零,對吧?因爲「內部表示」作爲1和0是給定的... – Floris