2012-03-07 36 views
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 
+8

請嘗試codereview.stackexchange.com,並參閱PEP 8. – geoffspear 2012-03-07 16:21:50

+3

我喜歡google的python風格指南:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html – Wilduck 2012-03-07 16:23:21

+4

要檢查語法和pep8合規性,你會發現[flake](http://pypi.python.org/pypi/flake8)有用。 – jcollado 2012-03-07 16:30:36

回答

1

關於代碼格式化,樣式和約定最重要的事情之一是「內部規則」。如果你的「家」(即工作場所,團隊,學校,老師等)期望以某種方式完成工作,那麼這就是你應該這樣做的方式。

在互聯網上找到的標準和慣例可以用作討論改變房屋規則,或爲個人項目制定自己的個人標準的來源材料。

但是請使用一些標準,如果可以的話,保留該標準的文檔的離線副本,以便您可以閱讀自己的代碼6,12,24個月;)。

相關問題