2016-04-29 15 views
4

最近、1から選択した数値まで数えられるプログラムを作成する際に問題が発生しています。Python:組み込み関数を使用しないバイナリ・カウント

これは、現時点では私のコードです:たとえば

num6 = 1 
binStr = '' 
num5 = input('Please enter a number to be counted to:') 
while num5 != num6: 
    binStr = str(num6 % 2) + binStr 
    num6 //= 2 

    num6 = num6 + 1 

print(binStr) 

、私は入力5、それは1、10、11、100、101 に行く必要がある場合、私はちょうどように見えることはできませんそれのハングアップ。助けていただければ幸いです。

+0

あなたのコードは、本当に意味がありません。あなたのロジックを説明しようとすると、自分で問題を見つけることができます...例えば、 'num5'が' 0'の場合はどうなりますか?... – Julien

+0

@mattsapあなたが参照する質問は明示的に尋ねますinbuiltのために、OPが望んでいるものの反対です。しかし、そこにあるいくつかの答えは、組み込みの実装ではないことは事実です。しかし、OPはまた、答えをコピーするのではなく、彼の*コードが間違っていることを理解したいと考えています。 – Julien

+0

また、バイナリカウントで何を意味するのかもわかりません。期待される結果の例を追加してください。 – Julien

答えて

1

問題は、入力番号とは関係がないnum6を分割することです。分ける回数を数える必要はないので、num5を2で割って残りの部分を取ることができます。私は、関数の内部であなたのbinary_to_stringを入れて、あなたの入力値に各数のためにそれを呼び出す:

num5 = int(input('Please enter a number to be counted to:')) 
for i in range(num5 + 1): 
    binStr = "" 
    decimal_number = i 
    while decimal_number > 0: 
     binStr = str(decimal_number % 2) + binStr 
     decimal_number //= 2 
    print(binStr) 
+0

num5とbinStrよりも良い変数名を使うべきだと思います。 decimal_numberとbinary_stringをそれぞれお勧めします。私はbinStrはあまりにも省略されていると思います。しかし、これは私の意見です。 – mattsap

+0

これは優れていますが、すべてのバイナリ番号を数えていません。たとえば、私が5を入力した場合、1、10、11、100、101になる必要があります。 – R7mone

+0

私のソリューションが変更されました。 – mattsap

関連する問題