Python程式語言的基礎包含資料型別與變數。常見的數值型別有整數和浮點數,用於儲存不同精確度的數值。變數如同容器,用於儲存資料,並可透過指定運算元更改其值。字串則用於表示文字,並支援多種操作,例如連線和重複。理解這些基本概念是Python程式設計的第一步。

# This program says hello and asks for my name.
print('Hello world!')
print('What is your name?')
myName = input()
print('It is good to meet you, ' + myName)

資料型別與變數指定

在程式設計中,每個值都有其特定的資料型別。常見的資料型別包括整數(int)和浮點數(float)。整數是不帶小數點的數字,例如42,而浮點數則是帶有小數點的數字,例如7.5或42.0。

變數指定

程式設計中經常需要儲存運算結果以便後續使用,這可以透過變數來實作。變數就像一個帶有名稱的盒子,可以用來儲存值。在Python中,使用指定運算元(=)將值儲存到變數中。例如:

spam = 15

內容解密:

  • spam 是變數名稱,可以視為一個盒子的標籤。
  • = 是指定運算元,用於將右邊的值儲存到左邊的變數中。
  • 15 是被儲存的值,是一個整數(int)。

當你按下Enter鍵後,不會看到任何回應,除非出現錯誤訊息。這表示指令已成功執行。

變數的操作

變數可以用來儲存單一值,而非運算式。例如:

spam = 10 + 5

內容解密:

  • 首先,運算式 10 + 5 被評估為 15
  • 然後,值 15 被儲存到變數 spam 中。

你可以透過輸入變數名稱來檢視其目前的值:

>>> spam = 15
>>> spam
15

覆寫變數

變數的值可以被改變,只需輸入另一個指定陳述式即可。例如:

>>> spam = 15
>>> spam + 5
20
>>> spam = 3
>>> spam + 5
8

內容解密:

  • 第一次執行 spam + 5 時,spam 的值是 15,所以結果是 20
  • 當執行 spam = 3 後,spam 的原值 15 被覆寫為 3
  • 第二次執行 spam + 5 時,結果是 8,因為 spam 現在的值是 3

使用多個變數

程式可以根據需要使用多個變數。例如:

>>> fizz = 10
>>> eggs = 15
>>> spam = fizz + eggs
>>> spam
25

內容解密:

  • fizzeggs 是兩個不同的變數,分別儲存了值 1015
  • spam = fizz + eggsfizzeggs 的值相加後儲存到 spam 中。
  • 因此,spam 的值為 25

變數命名

雖然電腦不介意變數的名稱,但良好的命名習慣可以使程式更容易理解。變數名稱應該反映其所儲存的資料型別或用途。Python中的變數名稱是區分大小寫的,也就是說,spamSPAMSpamsPAM被視為四個不同的變數。

此圖示展示了Python中變數名稱的大小寫敏感性質。節點A代表變數名稱,箭頭表示區分大小寫的特性,導致不同的變數名稱(節點B),進而各自儲存獨立的值(節點C)。

字串與程式撰寫基礎

在前一章中,我們學習了Python的基本運算和變數使用。本章將探討字串的操作以及如何撰寫簡單的程式。

字串的基本概念

在Python中,字串是用來表示文字的一系列字元。字串值(或簡稱字串)可以儲存在變數中,就像整數和浮點數一樣。當我們輸入字串時,需要用單引號(’)標示字串的開始和結束。

>>> spam = 'hello'
>>> spam
'hello'

單引號不是字串的一部分,而是用來告訴Python這是一個字串。字串可以包含幾乎任何鍵盤字元,包括字母、數字和符號。

字串的連線與重複

可以使用 + 運算元將兩個字串連線成一個新的字串,這個過程稱為字串連線(string concatenation)。

>>> 'Hello' + 'World!'
'HelloWorld!'
>>> 'Hello ' + 'World!'
'Hello World!'

內容解密:

  1. 'Hello' + 'World!' 將兩個字串直接連線,因為沒有空格,結果是 'HelloWorld!'
  2. 'Hello ' 後面加上一個空格,然後與 'World!' 連線,結果就是 'Hello World!'
  3. Python 根據資料型別決定 + 運算元的作用:對於字串是連線,對於整數是加法。

字串與整數的混合運算

嘗試將字串和整數一起使用 + 運算元會導致錯誤,因為Python不知道如何將整數隱式轉換為字串。

>>> 'Hello' + 42
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't convert 'int' object to str implicitly
>>> 'Hello' + '42'
'Hello42'

內容解密:

  1. 'Hello' + 42 導致錯誤,因為不能直接將整數 42 與字串 'Hello' 連線。
  2. 'Hello' + '42' 是合法的,因為兩個都是字串,結果是 'Hello42'
  3. 這個錯誤告訴我們,在混合使用不同資料型別時需要注意相容性。

使用IDLE撰寫原始碼

IDLE是一個Python開發環境,可以用來編寫和執行Python程式。透過IDLE,我們可以儲存和執行我們的程式碼。

列印與輸入函式

  • print() 函式用於在螢幕上顯示文字。
  • input() 函式允許使用者輸入文字。
>>> print('Hello World!')
Hello World!
>>> input('What is your name? ')
What is your name? 

內容解密:

  1. print('Hello World!') 直接在螢幕上顯示 'Hello World!'
  2. input('What is your name? ') 顯示提示訊息,並等待使用者輸入。
  3. 這些函式是互動式程式設計的基本工具。

程式的註解

註解是用來解釋程式碼的文字,不會被Python執行。註解以 # 符號開始,直到該行結束。

# 這是一個註解
print('Hello')  # 這也是註解

內容解密:

  1. # 符號後面的文字都是註解,用於解釋程式碼。
  2. 註解幫助開發者理解程式碼的功能和邏輯。
  3. 良好的註解習慣使程式碼更易於維護。

在下一章中,我們將繼續探索更多的Python基礎知識,包括控制流程和函式,這些將使我們能夠編寫更複雜和強大的程式。透過不斷的練習和學習,我們將能夠建立出更具互動性和功能性的程式。

字串操作與程式撰寫基礎

字串複製:使用 * 運算元

在 Python 中,* 運算元不僅可以用於數字之間的乘法運算,也可以對字串和整數進行操作,實作字串的複製。這意味著你可以根據整數的值重複某個字串。舉例來說,在互動式命令列中輸入以下內容:

>>> 'Hello' * 3
'HelloHelloHello'
>>> spam = 'Abcdef'
>>> spam = spam * 3
>>> spam
'AbcdefAbcdefAbcdef'
>>> spam = spam * 2
>>> spam
'AbcdefAbcdefAbcdefAbcdefAbcdefAbcdef'

內容解密:

  1. 'Hello' * 3 將字串 'Hello' 重複三次,得到 'HelloHelloHello'
  2. spam = 'Abcdef' 將字串 'Abcdef' 指定給變數 spam
  3. spam = spam * 3spam 的值重複三次並重新指定給 spam,得到 'AbcdefAbcdefAbcdef'
  4. spam = spam * 2 將新的 spam 值再次重複兩次,得到最終結果 'AbcdefAbcdefAbcdefAbcdefAbcdefAbcdef'

這裡需要注意的是,* 運算元可以作用於整數和字串,但不能作用於兩個字串,否則會引發錯誤。

使用 print() 函式輸出值

Python 中的 print() 函式用於將值輸出到螢幕上。呼叫 print() 函式時,可以傳遞一個或多個引數給它。例如:

>>> print('Hello!')
Hello!
>>> print(42)
42

內容解密:

  1. print('Hello!') 將字串 'Hello!' 輸出到螢幕。
  2. print(42) 將整數 42 輸出到螢幕。

你也可以傳遞一個運算式給 print() 函式,例如:

>>> spam = 'Al'
>>> print('Hello, ' + spam)
Hello, Al

內容解密:

  1. 'Hello, ' + spam 首先計算運算式,將 'Hello, 'spam 的值(即 'Al')連線起來,得到 'Hello, Al'
  2. print() 函式輸出最終的字串結果。

跳脫字元

在某些情況下,你可能需要在字串中使用一些特殊的字元,例如單引號。為瞭解決這個問題,Python 提供了跳脫字元。跳脫字元由反斜線 \ 和另一個字元組成,例如 \t\"\'。例如:

>>> print('Al\'s cat is named Zophie.')
Al's cat is named Zophie.

內容解密:

  1. 在字串中使用單引號時,為避免與起始引號混淆,使用跳脫字元 \' 表示單引號本身。
  2. 反斜線 \ 用於指示後面的字元具有特殊含義。

常見的跳脫字元包括:

  • \\:反斜線本身
  • \':單引號
  • \":雙引號
  • \n:換行符號
  • \t:水平定位符號(相當於按 Tab 鍵)

索引:取得字串中的單一字元

在 Python 中,可以使用索引來取得字串中的某個特定字元。索引是透過在字串後面加上方括號 [],並在括號內填入索引值來實作的。索引值從 0 開始,表示第一個字元。例如:

>>> spam = 'Hello'
>>> spam[0]
'H'
>>> spam[1]
'e'

內容解密:

  1. spam[0] 表示取得 spam 字串的第一個字元,即 'H'
  2. spam[1] 表示取得第二個字元,即 'e'

這種索引機制使得我們能夠精確地控制和操作字串中的每個字元。

字串的參照與雙引號使用規範

在 Python 中,字串可以用單引號或雙引號表示。兩種方式在本質上是相同的,但在使用時需要注意匹配。例如:

>>> print('Hello world')
Hello world
>>> print("Hello world")
Hello world

但不能混合使用不同型別的引號:

>>> print('Hello world")
SyntaxError: EOL while scanning single-quoted string

內容解密:

  1. 在使用單引號或雙引號時,應保持起始和結束引號的一致性。
  2. 為了避免跳脫字元的使用,可以根據需要選擇合適的引號型別。例如,在單引號內可以直接使用雙引號,而無需轉義。

字串與程式編寫

在 Python 中,字串是一種基本且重要的資料型態。字串可以用來表示文字訊息,並且可以進行各種操作,如索引、切片等。

索引

索引是一種用來存取字串中特定字元的方法。在 Python 中,索引從 0 開始,也就是說第一個字元的索引是 0,第二個字元的索引是 1,以此類別推。

索引範例

>>> spam = 'Hello'
>>> spam[0]
'H'
>>> spam[1]
'e'
>>> spam[2]
'l'

負索引

負索引則是從字串的末尾開始計算,第一個字元的索引是 -1,第二個字元的索引是 -2,以此類別推。

>>> 'Hello'[-1]
'o'
>>> 'Hello'[-2]
'l'
>>> 'Hello'[-3]
'l'

索引錯誤

如果嘗試存取超出字串範圍的索引,Python 會丟擲 IndexError 例外。

>>> 'Hello'[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

切片

切片是一種用來取得字串中一部分的方法。切片使用兩個索引,中間以冒號隔開,表示要取得的字串範圍。

切片範例

>>> 'Howdy'[0:3]
'How'
>>> 'Hello world!'[0:5]
'Hello'
>>> 'Hello world!'[6:12]
'world!'

省略索引

如果省略第一個索引,Python 會預設為 0。如果省略第二個索引,Python 會預設為字串的末尾。

>>> 'Howdy'[:3]
'How'
>>> 'Howdy'[2:]
'wdy'

切片應用

切片可以用來取得字串中的特定部分,例如取得檔案副檔名。

>>> myName = 'Zophie the Fat Cat'
>>> myName[-7:]
'Fat Cat'
>>> myName[:10]
'Zophie the'

使用 IDLE 編寫程式

IDLE 是 Python 的整合開發環境(IDE),提供了互動式 Shell 和檔案編輯器。我們可以使用 IDLE 編寫和執行 Python 程式。

建立新檔案

在 IDLE 中,可以透過點選 File > New Window 建立新的檔案編輯器視窗。

輸入程式碼

在檔案編輯器視窗中,可以輸入 Python 程式碼。例如,以下是一個簡單的 Hello World 程式:

# This program says hello and asks for my name.
print('Hello world!')
print('What is your name?')
myName = input()
print('It is good to meet you, ' + myName)

儲存程式

輸入完程式碼後,可以透過點選 File > Save As 儲存程式。建議定期儲存程式,以避免程式碼遺失。

儲存範例

儲存檔案時,可以選擇適當的檔案名稱和位置。例如,將上述程式儲存為 hello.py

執行程式

儲存程式後,可以透過點選 Run > Run Module 或按下 F5 鍵執行程式。程式將在互動式 Shell 中執行,並輸出結果。

使用Python撰寫第一個程式:Hello World

撰寫程式的第一步是瞭解如何執行簡單的指令,而「Hello World」是最經典的入門程式。本章將介紹如何使用Python建立並執行第一個程式,同時解析程式碼的工作原理。

執行你的程式

完成程式碼的撰寫後,點選「Run」選單中的「Run Module」或直接按下F5鍵來執行程式。程式將在IDLE的Shell視窗中執行。當程式要求輸入名字時,請依照指示輸入,如圖4-5所示。

圖4-5:執行「Hello World」程式時的互動式Shell畫面

輸入名字後按下Enter鍵,程式將會以名字稱呼使用者。恭喜你!你已經成功撰寫並執行了第一個程式,正式邁入程式設計的世界。

常見錯誤排除

如果執行時出現類別似以下的錯誤訊息:

Traceback (most recent call last):
  File "C:/Python27/hello.py", line 4, in <module>
    myName = input()
  File "<string>", line 1, in <module>
NameError: name 'Albert' is not defined

這表示你正在使用Python 2而非Python 3。為避免此問題,請至http://python.org/getit下載並安裝Python 3。

開啟已儲存的程式

關閉檔案編輯器後,可以透過「File」選單中的「Open」來重新載入已儲存的程式。選擇hello.py並按下「Open」按鈕,程式將再次出現在檔案編輯器視窗中。

「Hello World」程式解析

每行程式碼都是一條指令,告訴Python該做什麼。程式就像食譜一樣,按照順序一步步執行。

註解(Comments)

# This program says hello and asks for my name.

此行是註解,用於提醒程式設計師程式的功能。註解以#符號開頭,電腦會忽略這些內容。

函式(Functions)

函式是程式中的小型子程式,用於執行特定任務。Python內建多個函式,例如print()函式用於在螢幕上顯示文字。

print('Hello world!')
print('What is your name?')

上述兩行呼叫了print()函式,分別顯示「Hello world!」和「What is your name?」。

input()函式

myName = input()

此行使用input()函式等待使用者輸入文字並按下Enter鍵。輸入的文字將儲存於變數myName中。

函式呼叫與回傳值

函式呼叫會回傳一個值。在myName = input()中,input()函式的回傳值(使用者輸入的文字)被賦予變數myName

重點整理

  1. 註解:用於解釋程式碼,不被電腦執行。
  2. 函式:用於執行特定任務,例如print()input()
  3. 函式呼叫:用於執行函式內的程式碼,並可回傳特定值。

藉由理解「Hello World」程式的工作原理,我們能夠更深入地掌握Python程式設計的基礎概念。接下來,我們將進一步探索更多Python的進階功能與應用。

Plantuml 圖表說明

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title Python資料型別變數與字串操作

package "Python 應用架構" {
    package "應用層" {
        component [主程式] as main
        component [模組/套件] as modules
        component [設定檔] as config
    }

    package "框架層" {
        component [Web 框架] as web
        component [ORM] as orm
        component [非同步處理] as async
    }

    package "資料層" {
        database [資料庫] as db
        component [快取] as cache
        component [檔案系統] as fs
    }
}

main --> modules : 匯入模組
main --> config : 載入設定
modules --> web : HTTP 處理
web --> orm : 資料操作
orm --> db : 持久化
web --> cache : 快取查詢
web --> async : 背景任務
async --> fs : 檔案處理

note right of web
  Flask / FastAPI / Django
end note

@enduml

此圖示展示了「Hello World」程式的執行流程,從開始到結束的每一步驟都清晰地標示出來。