2016-07-07 15 views
1

私はPython 2.7の全く新しいです。前回私は自分自身のために少し機能し、アルゴリズムをどのように改善できるか知りたいと思っていました。そこに何か不必要なことは書いてありますか? (私は初心者であるため、目的関数でビルドを使用したくなかったが、これらが存在することを知っている。後でこれを念頭に置いておくことを望む。)あるいは、基数2からベース10?それが私が知っている唯一の方法であり、むしろペンと紙でどのように計算するかです。バイナリから10進コードへの改善

import math 

print "Please enter a binary sequence." 
prompt = '>> ' 
x = raw_input(prompt) 
n = x[::-1] 
i = 0 
s = 0 

'''bin2dec''' 
for i in range(len(n)): 
    i += 1 
    if int(str(n)[i-1]) != 0: 
    s += pow(2, i-1) 
    else: 
    s += 0 
print s 

PS:私は現在、逆アルゴリズムを試しています。お楽しみに:)

+3

これが改善されると思われる**作業コード**の場合は、[codereview.se]を参照してください。そうでない場合は、問題を明確にしてください。 – jonrsharpe

+0

実際には動作するコードです。コードレビューセクションについて知りませんでした。それに言及してくれてありがとう。私は間違いなくそれをチェックアウトします。 – Stefan

+0

最初のコメント:より良い変数名を使用してください。 – Mast

答えて

0
import math 
print "Please enter a binary sequence." 
prompt = '>> ' 
x = raw_input(prompt) 
x = list(x[::-1]) 
result=0 
'''bin2dec''' 
for i in range(len(x)): 
    result+=int(x[i])*pow(2,i) 
print result 
  • 掲示しながら、まず理解した変数を保持します。
  • トラバースを向上させるため、入力をリストに変換できます。
  • これは、あなたのコンセプトでより明確でアップグレード可能なコードです。
  • 数学関数の代わりに2**iを使用できます。