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