繁体   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