[Python] 第 1 個範例:16 進位轉 10 進位

初學 Python 可感受到此語言的幾個特色:
  1. 直譯式語言,程式碼即執行檔。
  2. 非常重視簡潔,程式碼較短。
  3. 不使用大括號分隔程式碼區塊,採用縮排來分隔區塊,同樣的程式碼,縮排錯誤可能造成程式錯誤。
  4. 不用分號結尾。
直接來看 Code。以下是我寫的 16 進位轉 10 進位的程式:

#!/usr/bin/env python3
# hex2d.py

print(" Hex to integer converter. enter ^D to exit.")
while Ture:
       try:
             line = input(" input hex: ")
             if line:
                 number = int(line, 16)
                 print(" Decimal: ", number)
       except ValueError as err:
                 print(err)
                 continue
       except EOFError: 
                 print(" EOF Detected.")
                 break

print(" Bye, have a nice day.")
執行方法 (Linux)
將程式碼的權限改為可執行:
chmod +x hex2d.py

直接將程式碼當執行檔執行:
./hex2d.py

說明
程式碼的開頭 "#!/usr/bin/env python3" 稱為 shebang,代表此程式碼必須使用 python3 版本的直譯器執行。同時,加入 shebang 可讓程式碼變成單獨的執行檔。如果不加 shebang,在執行 python 程式碼時,就必須輸入:
python ./hex2d.py

shebang 必須寫在程式碼開頭第1行。Unix-like 的作業系統會讀取執行檔開頭的兩個字元,讀到 "#!" 時代表要用直譯器執行。"#!" 後面告訴作業系統要採用 python3 直譯器。

Python 的 int 函數十分好用,可將字串轉成整數,而且可指定 Radix(即進位表示法)。
例如 int("15", 16) 代表 16 進位的 0x15 轉為十進位。
也可以將第二個參數給 0,讓 python 自行判斷是幾進位:

number = int(line, 0)

此時輸入的 line 前面就要加上 "0x",這樣 python 才知道我們想表達的是 16 進位。

我們採用例外處理的程式碼,來偵測輸入時會發生的錯誤情況。從程式碼可以很直覺地了解,當輸入的文字無法轉成有效整數時,會跳到對應的例外處理。EOFError 的處理,讓使用者輸入 Ctrl + D(即 Unix-like 系統的 EOF 字元)時可以被偵測,或者當我們將某文字檔當作此程式輸入時,讀到檔案結尾時可透過例外處理而跳出迴圈。



留言