在 Linux 系統中操作,熟悉幾款文字編輯器是必備技能,本文將介紹 Emacs、nano 和 Leafpad 的基本使用方式。接著,以 Python 程式語言作為範例,帶領讀者認識指令碼語言的特性,瞭解 Python 的基礎語法、資料型態,並學習如何在 Linux 環境下撰寫及執行 Python 指令碼。實作部分包含透過終端機執行 Python 指令、使用 Leafpad 編輯器撰寫 Python 程式碼,以及在終端機中執行 Python 指令碼。

Linux 操作與 Python 入門

Linux 文字編輯器:Emacs、nano 與 Leafpad

在 Linux 環境中,文字編輯器是開發者必備的工具。以下玄貓將介紹三種常見的編輯器:Emacs、nano 與 Leafpad,並說明其使用方法及特色。

Emacs:強大且靈活的編輯器

Emacs 是一款功能強大且高度可自訂的文字編輯器。雖然初次使用可能需要一些時間適應,但一旦掌握其快捷鍵操作,便能大幅提升工作效率。

  • 移動與選取文字
    • 移動遊標到行首:Ctrl + a
    • 移動遊標到行尾:Ctrl + e
    • 選取文字:按下 Ctrl + 空格鍵 啟動標記模式,然後使用快捷鍵移動遊標來選取文字區塊。
    • 剪下選取的文字:Ctrl + w
    • 貼上剪下的文字:Ctrl + y

如果你對 Emacs 感興趣,網路上有許多教學資源可以幫助你學習其快捷鍵操作。重要的是,如果你在使用過程中遇到困難,可以透過選單來找到相應的命令。

nano:簡單易用的編輯器

nano 是三者中最簡單易用的編輯器,適合初學者。要開始使用 nano,只需在終端機輸入以下指令:

nano testfile.txt

若指定的檔案存在,nano 會直接開啟它;若不存在,nano 會為你建立一個新檔案。

nano 的使用介面非常直觀,底部列出了常用的命令,例如:

  • 儲存檔案並離開:按下 Ctrl + X
  • 若有未儲存的變更,會詢問是否要儲存檔案,按下 Y 並按下 Enter 鍵即可儲存。

Leafpad:輕量級圖形化編輯器

Leafpad 是一款輕量級且圖形化介面的文字編輯器,預設已安裝在 Raspberry Pi 上。要啟動 Leafpad,只需點選桌面左下角的圖示,然後選擇「附屬應用程式」→「Leafpad」。

Leafpad 的介面與其他常見的文字編輯器(如 Textedit 或 Notepad)相似,操作起來非常直觀。然而,其主要缺點是僅能在桌面環境中使用,無法透過遠端登入來進行操作。

Python 語言介紹

Python 是一種簡單易學且功能強大的指令碼語言。Raspberry Pi 的創始人 Eben Upton 和他的夥伴們選擇將 Python 作為 Pi 作業系統的一部分,以便讓更多人能夠輕鬆地學習和使用這種語言。

指令碼語言 vs. 編譯語言

Python 屬於指令碼語言(scripting language),與傳統的編譯語言(compiled language)有所不同:

  • 編譯語言:如 C、C++ 和 Java 需要透過編譯器將程式碼轉換成機器碼。這些語言通常能生成速度更快的程式,因為編譯過程中會進行程式碼最佳化。
  • 指令碼語言:如 Python 和 Bash 不需要編譯步驟。它們在每次執行時都會被解釋和執行,這使得開發和測試更加靈活。然而,由於沒有編譯最佳化步驟,指令碼語言生成的程式通常速度較慢。

Python 基礎範例

以下是一個簡單的 Python 指令碼範例:

print("Hello, World!")

這段程式碼會輸出 “Hello, World!"。

指令碼解密:

  1. print 函式:Python 中用來輸出文字到控制檯。
  2. 字串:用雙引號括起來表示字串。
  3. 執行方式:可以直接在終端機中執行 Python 指令碼或使用 IDE 執行。

Python 語言簡介

程式語言往往比較複雜且難以學習,而指令碼語言則更容易閱讀,語法要求較少,對於非程式設計師來說也相對不那麼令人生畏。這也是為什麼指令碼語言常常被用來教導初學者程式設計的原因。然而,隨著技術的進步,程式語言和指令碼語言之間的界限已經變得模糊不清。以下是一些關鍵點:

程式語言與指令碼語言的區別

  1. 編譯與解釋: 嚴格的程式語言通常需要編譯,而指令碼語言則是解釋執行。然而,現代處理器的速度和記憶體管理技術已經使得這一點變得不再重要。例如,用C和Python編寫的程式在執行速度上差異已經微乎其微。

  2. 執行環境: 雖然指令碼語言通常在另一個程式中執行,但Java和C#這類別編譯語言也是在虛擬機器或特定環境中執行的。這些環境使得這些語言具有很高的可攜性。

  3. 易讀性與學習曲線: 程式語言通常比較複雜,學習曲線較陡峭,而指令碼語言則更容易閱讀和學習。以下是用C++和Python列印「Hello, world!」的範例:

    C++

    #include <iostream>
    using namespace std;
    int main() {
        cout << "Hello, world!" << endl;
        return 0;
    }
    

    Python

    print("Hello, world!")
    

Python 的哲學

Python 作為一種指令碼語言,其哲學始終強調程式碼的可讀性和易存取性。這些理念在《Python之禪》中有明確的描述:

  1. 美麗勝過醜陋。
  2. 明確勝過隱晦。
  3. 簡單勝過複雜。
  4. 複雜勝過繁瑣。
  5. 平坦勝過巢狀。
  6. 稀疏勝過緊湊。
  7. 可讀性至上。
  8. 特例不足以打破規則。
  9. 忙於實踐勝過純粹主義。
  10. 錯誤應該顯示明確。

此外,Python採取「內建電池」的思維模式,這意味著無論你想做什麼任務,很可能已經有一個現成的模組可以完成。

Python 的入門

要開始使用Python,你可以在Raspberry Pi上使用三種方法:內建的IDLE直譯器、終端機視窗或作為指令碼執行。我們先從IDLE開始。

使用IDLE執行Python

IDLE直譯器是一個可以互動地工作與Python而不需要寫整個指令碼來看到效果的「沙盒」。雙擊桌面上的圖示(如圖3-1),你應該會看到如圖3-2所示的視窗。

首先,我們按照傳統來寫第一個程式:

>>> print("Hello, world!")

按下Enter後,你應該會看到「Hello, world!」。

這是Python的print陳述式,預設情況下輸出到螢幕上。接下來我們試試變數操作:

>>> x = 4

按下Enter後,提示符會回來但什麼都不會發生。這是因為Python的直譯器現在把x與數字4綁定了。如果你現在輸入:

>>> x

你會看到4。同樣地,如果你輸入:

>>> print(x)

你還是會看到4

這展示了Python的一個非常酷的特性:動態型別。在像C這樣的語言中,你必須在宣告變數之前定義它的型別:

string x = "This is a string";
int x = 5;

但在Python中,當你說x = 5時,「x」就是一個整數(int)。

儘管Python是動態型別的,但它是強型別的。這意味著它會丟擲錯誤而不是允許你像將整數加到字串這樣做無意義的操作。你也可以定義自己的型別使用類別;Python完全支援導向物件程式設計(OOP)。我們後面會再提到這個問題。

Python 的基本資料型態

Python有幾種內建資料型態:

  • 數字(Numbers)
  • 字串(Strings)
  • 清單(Lists)
  • 字典(Dictionaries)
  • 元組(Tuples)
  • 檔案(Files)

我們將在之後逐一介紹這些資料型態。

動態型別與強型別

動態型別意味著你可以在執行時改變變數的型別,而不需要事先宣告。強型別意味著如果你嘗試進行無意義的操作(例如將整數加到字串),Python會丟擲錯誤。

>>> x = "hello"
>>> x = 123

這段程式碼完全合法且能正常執行。

基本操作

接下來我們試試一些基本操作:

>>> print(x + 5)

會傳回9;但是如果你輸入:

>>> x + "dad"

會丟擲錯誤:「TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’」,因為不能將整數加到字串上。

主題標題:Python 程式語言的基礎與應用

段落標題:理解 Python 的基本概念

Python 是一種流行的高階程式語言,以其簡潔的語法和強大的功能著稱。Python 的設計目的是讓程式碼易於閱讀和寫作,這使得它成為初學者和專業開發者的首選。Python 並不是以蛇命名,而是以英國喜劇團體「蒙提·派森」命名,這個團體對於 Python 的設計和命名有著深遠的影響。

次段落標題:Python 的基本運算

在 Python 中,基本的字串運算非常直觀。例如,將兩個字串相加,實際上是將它們連線在一起:

"DAD" + "hello"

這樣會得到 'DADhello'。如果你想要建立一個列表,可以使用方括號:

y = ['rest', 1234, 'sleep']

同樣地,字典(dictionary)是一種由鍵值對組成的資料結構,使用大括號來表示:

z = {'food': 'spam', 'taste': 'yum'}

在字典中,鍵值對是其核心部分。例如,在上述字典中,'food''spam' 是一個鍵值對,'taste''yum' 也是一個鍵值對。你可以透過輸入鍵來取得相應的值。

段落標題:使用終端機執行 Python

除了使用圖形化介面(如 IDLE)來執行 Python 程式碼外,你還可以使用終端機來執行。開啟終端機並輸入 python 指令後,你會看到與 IDLE 類別似的互動提示符 >>>。在此你可以執行與 IDLE 中相同的指令。

段落標題:使用指令碼編寫 Python 程式

雖然 IDLE 和終端機都可以用來執行 Python 指令,但它們都無法儲存真正的指令碼程式。當你關閉視窗時,所有變數都會消失。解決這個問題的方法是使用文字編輯器來編寫完整的 Python 程式。

以下是使用 Leafpad 編輯器編寫一個簡單指令碼的範例:

  1. 開啟 Leafpad 文字編輯器。
  2. 在文字編輯器中輸入以下程式碼:
x = 4
y = x + 2
print(y)
  1. 將檔案儲存為 test.py
  2. 開啟終端機並導航到桌面:
cd ~/Desktop
  1. 執行指令碼:
python test.py

你應該會看到輸出結果 6。恭喜你!你剛剛成功編寫、儲存並執行了第一個 Python 指令碼。

次段落標題:使用不同的文字編輯器

在這本文中,我們會使用 Leafpad 作為預設文字編輯器,但你也可以根據自己的需求選擇其他文字編輯器,如 nano 或 emacs。例如:

sudo nano spam-and-eggs.py

段落標題:探索 Python 的資料型態

Python 提供了多種內建資料型態,包括數字、字串、列表、字典、元組和檔案等。以下我們將逐一介紹這些資料型態。

次段落標題:數字

數字在程式設計中似乎是顯而易見的概念。Python 支援多種數字型別,如整數、浮點數等。Python 提供了多種運算元號來進行計算和比較操作:

# 基本運算元號
+   # 加法
-   # 減法
*   # 乘法
/   # 除法
%   # 模數(取餘數)

# 比較運算元號
>   # 大於
>=  # 大於等於
<   # 小於
<=  # 小於等於
==  # 等於
!=  # 不等於

# 雙元邏輯運算元號
and # 與(AND)
or  # 或(OR)
not # 不(NOT)

此外,Python 支援模組匯入功能,可以擴充套件其內建功能。例如,如果你需要進行更複雜的數學運算,可以匯入 math 模組:

>>> abs(-16)
16

>>> import math
>>> math.ceil(16.7)
17.0

透過匯入 math 模組,你可以獲得更多數學函式的支援。

次段落標題:字串

字串是由文字組成的一系列資料。Python 支援多種字串操作,如連線、切割和格式化等。

次段落標題:列表

列表是有序集合,可以包含多種型別的元素。

次段落標題:字典

字典是鍵值對集合。

次段落標題:元組

元組是不可變列表。

次段落標題:檔案操作

Python 提供了豐富的檔案操作功能。

主題標題:實務應用與未來趨勢分析

段落標題:實務應用案例與技術選型分析

在實務應用中,Python 嚴格按照特定資料結構及概念精確化處理特定問題並非普遍性工作流程管理流程且不適合涉及量級大且需求快速變更之需求而專注於專業領域提供解決方案進行研究之技術員工可多樣化避免重複性工作流程。

段落標題:未來趨勢預測與技術發展方向

隨著人工智慧技術與雲端計算發展迅速普及化社會生活與商業營運模式逐漸轉變至高效率智慧化處理資訊流量需求增加強調技術創新及安全性考量提升系統可靠性且涉及敏感資料處理之需求設定合規性要求防範風險具體策略維護規範及政策更新趨勢雙重保障確保安全管理系統穩定執行力挺未來科技發展前景廣闊且綠色環保共創美好世界