2016-11-02 6 views
-1

私は現在、Pythonを使用してバイナリプログラムへのデナリを作成しています。誰かが私を助けて、私のコードを修正してくれればそれは大変感謝しています。Pythonのdenary to binaryプログラムで何が問題になっていますか?

answer = [] 
number = 0 

denaryNumber = int(input("Type the number you would like to be put in binary (LIMIT IS 255)")) 
binary = [128,64,32,16,8,4,2,1] 

for x in range (0,8): 
    if denaryNumber >= binary[number]: 
     subtraction = binary[number] - (denaryNumber) 
     answer.append (1) 
     number += 1 
    else: 
     answer.append (0) 
     number += 1 
print (answer) 
+0

あなたのインデントを修正してください... – AChampion

+1

は、なぜあなたは(ビンを使用していません)バイナリに変換する関数でビルド? –

+0

私はこのようにしたいので –

答えて

0

これが原因で次の行で動作していない:

subtraction = binary[number] - (denaryNumber) 

あなたが再び使用されることはありませんbinaryのインデックスから減算して、使用されることはありません、それを変数に代入されています。何をするつもりはこれです:

denaryNumber -= binary[number] 
+0

ohhはいあなたは私がとても簡単な解決策を感じているので、あなたはそれほど簡単な解決策です! –

0
answer = [] 

number = 0 #what is this number for when you have the same counter in x 

denaryNumber = int(input("Type the number you would like to be put in binary (LIMIT IS 255)")) 

binary = [128,64,32,16,8,4,2,1] 

for x in range (0,8): #x is being updated each time the loop goes, so it's 0,1,2,3,4,5,6,7, just like number so number is useless 

if denaryNumber >= binary[number]: #wrong indentation 

    subtraction = binary[number] - (denaryNumber) # you want denaryNumber - binary[x] or you will get a negative number and that's why it's not workting 

    answer.append (1)  #wrong indentation and what is 'append (1)'. why is there a space? function calls have no space between the '()' 

    number += 1 

    else:     #wrong indentation 
     answer.append (0) #function calls have no space between the function name and the parameter brakets 
     number += 1 

print (answer) 

は、私はあなたのコードにコメントとして入れたものを読んで間違っているものを参照してください。最終的な答えは次のようになります。

answer = [] 
denaryNumber = int(input("Type the number you would like to be put in binary (LIMIT IS 255)")) 
binary = [128,64,32,16,8,4,2,1] 

for x in range(0,8): 
    if denaryNumber >= binary[x]: 
     denaryNumber = denaryNumber - binary[x] 
     answer.append(1) 
    else: 
     answer.append(0) 

print(answer) 

コメントを読んでいない場合は、重要な点があります。インデントはPythonで大きく問題になります。関数呼び出しには、その名前と()の間にスペースがありません。 Pythonのループは基本的にはfor eachループですが、iterateからiterableオブジェクトです。この場合、range()は反復可能なオブジェクトであり、xは0-7のカウンターになります。

これは宿題に関する質問ですが、あなたがやりたいことをするための機能が組み込まれていますが、これは使用できない可能性がありますが、今後の参考にしておくとよいでしょう。あなたはあなたができると同じように、あなたの出力が必要な場合は

denaryNumber = int(input("Type the number you would like to be put in binary (LIMIT IS 255)")) 
print(bin(denaryNumber)) 

bin()は、バイナリ文字列に数値を変換

denaryNumber = int(input("Type the number you would like to be put in binary (LIMIT IS 255)")) 
print([int(x) for x in bin(denaryNumber)[2:]]) 
+0

私に手伝ってくれてありがとう –

関連する問題