簡體   English   中英

Python-如何在一個字符串中查找多個字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM