简体   繁体   English

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

[英]Python - How to look up multiple characters in a string

I am trying to make a piece of code that converts an 8 digit binary string to hexadecimal however it does not seem to output anything, I think that the problem is in looking up the characters in the binary but I am not sure. 我正在尝试编写一段将8位二进制字符串转换为十六进制的代码,但是它似乎没有输出任何东西,我认为问题出在查找二进制字符中,但是我不确定。 The code is as follows: 代码如下:

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)

Any help would be appreciated, thanks! 任何帮助,将不胜感激,谢谢!

The problem lies in how you're slicing your string. 问题在于您如何分割字符串。 Specifically with startnumber = number[0:3] and startnumber = number[4:7] . 特别是startnumber = number[0:3]startnumber = number[4:7]

Use startnumber = number[0:4] and startnumber = number[4:8] . 使用startnumber = number[0:4]startnumber = number[4:8]

Why? 为什么?

startnumber = number[0:3] gives you the first 3 characters in number (ie, number[0] , number[1] , and number[2] ) startnumber = number[0:3]给出在第一个3个字符number (即, number[0] number[1]number[2]

Ex: 例如:

> number = "00001111"
> startnumber = number[0:3]
> print(startnumber)
'000'
> startnumber = number[0:4]
> print(startnumber)
'0000'
> startnumber = number[4:8]
> print(startnumber)
'1111'

EDIT: As mentioned in your question's comments, there's also a problem with your assignment of startnumber . 编辑:正如您的问题的评论中提到的,您分配startnumber也存在问题。 Take note that Python (and most programming languages) are zero-indexed , meaning iterations generally start at 0 and end at n-1 . 请注意,Python(和大多数编程语言) 的索引为零 ,这意味着迭代通常从0开始,以n-1结束。 So range(2) actually iterates from 0 to 1 , excluding 2 . 因此range(2)实际上从0迭代到1 ,不包括2

This is wrong on so many levels. 在许多级别上这都是错误的。

1) It's builtin 1)它是内置的

int(number, 2)

2) If you want do it manually 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