1
我是一個Python新手。我剛剛創建了一個採用二進制補碼的程序並將其轉換爲十進制值。 (轉換的方式描述在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 2012-03-07 16:21:50
我喜歡google的python風格指南:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html – Wilduck 2012-03-07 16:23:21
要檢查語法和pep8合規性,你會發現[flake](http://pypi.python.org/pypi/flake8)有用。 – jcollado 2012-03-07 16:30:36