私はpythonの初心者です。私はちょうど2の補数の2進数を取って10進数値に変換するプログラムを作成しました。 (変換方法はhttp://sandbox.mc.edu/~bennet/cs110/tc/tctod.htmlに記載されています)誰でも私にプログラムの書式設定と効率に関するアドバイスをいただけますか?
プログラムのフォーマット方法と、プログラムの設計方法に関するいくつかの「良い習慣」があります。どのようにヘッダ、コメントなどを配置するように、どのようにそれの構造を設計する。私はインターネット上のガイドを見つけることができなかったので、私はここで質問することにしました。
これは初めて私がstackoverflowに投稿しているので、間違いがあれば私にご負担ください。 :)
ここは私のコードです。
def secBiToDecimal(number):
""" This program takes a 2's complement binary number as input and returns its decimal value
"""
output = ""
" Check the sign of this number and calculate its value in according way."
if number[0]=='0':
output += "+"
temp = 0
for i in range(1,len(number)):
temp += (int(number[i]) * (2**(len(number)-i-1)))
output += str(temp)
print output
elif number[0]=='1':
output += "-"
carryout = 1
" flip the digits"
number = list(number)
for i in range(len(number)):
if number[i] == "1":
number[i]='0'
else:
number[i]='1'
" add 1 to number in binary sense "
for i in range(1,len(number)):
if carryout == 0 and number[len(number)-i]=='0':
break
elif carryout == 1 and number[len(number)-i]=='0':
number[len(number)-i]='1'
break
elif carryout == 0 and number[len(number)-i]=='1':
number[len(number)-i]='1'
break
elif carryout == 1 and number[len(number)-i]=='1':
number[len(number)-i]='0'
number = "".join(number)
temp = 0
for i in range(1,len(number)):
temp += int(number[i]) * (2**(len(number)-1-i))
output += str(temp)
print output
codereview.stackexchange.comを試して、PEP 8を参照してください。 – geoffspear
Googleのpythonスタイルのガイドが好きです:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html – Wilduck
構文とpep8の準拠を確認するには、あなたは[フレーク](http://pypi.python.org/pypi/flake8)が役に立ちます。 – jcollado