[英]Python - How to look up multiple characters in a string
我正在嘗試編寫一段將8位二進制字符串轉換為十六進制的代碼,但是它似乎沒有輸出任何東西,我認為問題出在查找二進制字符中,但是我不確定。 代碼如下:
number = input("Enter your binary number: ")
if len(number) < 8:
for i in range(0,8-len(number)):
newnumber = "0"+number
number = newnumber
endnumber = ["",""]
result = ""
for i in range(2):
if i == 1:
startnumber = number[0:3]
else:
startnumber = number[4:7]
if startnumber == "0000":
result = result + "0"
elif startnumber == "0001":
result = result + "1"
elif startnumber == "0010":
result = result + "2"
elif startnumber == "0011":
result = result + "3"
elif startnumber == "0100":
result = result + "4"
elif startnumber == "0101":
result = result + "5"
elif startnumber == "0110":
result = result + "6"
elif startnumber == "0111":
result = result + "7"
elif startnumber == "1000":
result = result + "8"
elif startnumber == "1001":
result = result + "9"
elif startnumber == "1010":
result = result + "A"
elif startnumber == "1011":
result = result + "B"
elif startnumber == "1100":
result = result + "C"
elif startnumber == "1101":
result = result + "D"
elif startnumber == "1110":
result = result + "E"
elif startnumber == "1111":
result = result + "F"
print(result)
任何幫助,將不勝感激,謝謝!
問題在於您如何分割字符串。 特別是startnumber = number[0:3]
和startnumber = number[4:7]
。
使用startnumber = number[0:4]
和startnumber = number[4:8]
。
startnumber = number[0:3]
給出在第一個3個字符number
(即, number[0]
number[1]
和number[2]
例如:
> number = "00001111"
> startnumber = number[0:3]
> print(startnumber)
'000'
> startnumber = number[0:4]
> print(startnumber)
'0000'
> startnumber = number[4:8]
> print(startnumber)
'1111'
編輯:正如您的問題的評論中提到的,您分配startnumber
也存在問題。 請注意,Python(和大多數編程語言) 的索引為零 ,這意味着迭代通常從0
開始,以n-1
結束。 因此range(2)
實際上從0
迭代到1
,不包括2
。
在許多級別上這都是錯誤的。
1)它是內置的
int(number, 2)
2)如果您想手動進行
result = 0
for index, char in enumerate(number[::-1]):
if char == '1':
result += 2^index
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.