2016-04-29 16 views
0

8桁のバイナリ文字列を16進数に変換するコードを作成しようとしていますが、何も出力していないようですが、バイナリの文字はわかりませんが。コードは次のとおりです:Python - 文字列内の複数の文字を検索する方法

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) 

ご協力いただきありがとうございます!

+3

なぜ '進(int型( '1010101'、2))'行いたい場合は? – jeremycg

+1

'range(2)'は '1、2'ではなく' 0,1 'をカウントするので、 'number [4:7]'を最初に実行し、 'number [0:3]'を実行することに注意してください。 –

+0

素晴らしい、それは最初に2番目のキャラクターをやっていたことを修正しました。私はいつもそれが1ではなく2であったと仮定していました。0 –

答えて

2

問題は、文字列をどのようにスライスするかにあります。具体的にはstartnumber = number[0:3]startnumber = number[4:7]です。

startnumber = number[0:4]startnumber = number[4:8]を使用してください。

なぜですか?

startnumber = number[0:3]number(すなわち、number[0]number[1]、およびnumber[2])にあなたの最初の3つの文字を与える

例:

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

EDIT:あなたの質問のコメントで述べたように、との問題もありますあなたの割り当てはstartnumberです。 Python(とほとんどのプログラミング言語)はゼロインデックス付きであることに注意してください。つまり、反復は通常0で開始し、終了はn-1です。したがって、range(2)は、実際には0から1に、2を除いて繰り返されます。

+0

ありがとう!これは本当に助けになりました:-) –

0

これは多くのレベルで間違っています。

1)それは組み込みです

int(number, 2) 

2)あなたはそれを手動

result = 0 
for index, char in enumerate(number[::-1]): 
    if char == '1': 
     result += 2^index 
関連する問題