Python 的資料型別系統是其靈活性和易用性的根本。開發者需要掌握 int、float 和 str 這三種基本資料型別,並理解它們在運算和轉換中的行為差異。例如,字串和數字的加法運算需要先進行型別轉換,否則會引發 TypeError。變數的命名、指定和覆寫規則也需要特別注意,以確保程式碼的可讀性和可維護性。使用 try-except 塊可以有效地處理潛在的錯誤,提高程式的穩定性。熟悉 PEP 8 編碼風格有助於編寫更規範、更易於協作的程式碼。

基礎資料型別與運算

在 Python 中,資料型別是用於分類別不同型別的資料的。最常見的資料型別包括整數(int)、浮點數(float)和字串(str)。

整數(int)

整數是一種沒有小數點的整數,例如 -2、30 等。整數之間可以進行加、減、乘、除等運算。

print(42 + 5)  # 輸出:47
print(42 * 2)  # 輸出:84

浮點數(float)

浮點數是一種有小數點的數字,例如 3.14、-1.25 等。浮點數之間也可以進行加、減、乘、除等運算。

print(3.14 + 2.5)  # 輸出:5.64
print(3.14 * 2)  # 輸出:6.28

字串(str)

字串是一種用於表示文字的資料型別,例如 ‘Hello’、‘Goodbye cruel world!’ 等。字串需要用單引號(’)或雙引號(")包圍。

print('Hello')  # 輸出:Hello
print("Goodbye cruel world!")  # 輸出:Goodbye cruel world!

字串連線與複製

字串可以使用 + 運算子進行連線。

print('Alice' + 'Bob')  # 輸出:AliceBob

但是,如果嘗試將字串和整數使用 + 運算子連線,Python 會報錯。

print('Alice' + 42)  # 報錯:TypeError: can only concatenate str (not "int") to str

錯誤處理

在 Python 中,錯誤是使用 try-except 塊來處理的。

try:
    print('Alice' + 42)
except TypeError as e:
    print(e)  # 輸出:can only concatenate str (not "int") to str

在這個例子中,當嘗試將字串和整數連線時,Python 會報 TypeError 錯誤,並且 except 塊會捕捉到這個錯誤並列印預出錯誤資訊。

變數與資料儲存

在 Python 中,變數就像電腦記憶體中的一個盒子,你可以在其中儲存一個值。如果你想在程式中稍後使用一個表示式的結果,你可以將它儲存在變數中。

指派陳述式

你可以使用指派陳述式來儲存值到變數中。指派陳述式由變數名稱、等號(稱為指派運算元)和要儲存的值組成。如果你輸入指派陳述式 spam = 42,則會建立一個名為 spam 的變數,並將整數值 42 儲存其中。你可以將變數想象成一個帶有標籤的盒子,值被放在其中,但第 6 章將解釋如何使用值的名稱標籤作為更好的隱喻。

變數命名規則

變數名稱可以包含字母、數字和底線,但不能以數字開頭。另外,變數名稱不能是 Python 的關鍵字。

基本資料型別

Python 有幾種基本資料型別,包括:

  • 整數(int):例如 1、2、3 等
  • 浮點數(float):例如 3.14、-0.5 等
  • 字串(str):例如 “hello”、‘hello’ 等

資料型別轉換

Python 可以在不同資料型別之間進行轉換。例如,你可以使用 str() 函式將整數轉換為字串,或者使用 int() 函式將字串轉換為整數。

運算元

Python 有多種運算元,包括:

  • 算術運算元:例如 +-*/
  • 比較運算元:例如 ==!=><
  • 邏輯運算元:例如 andornot

字串複製

Python 的 * 運算元可以用於字串複製。例如, "hello" * 3 會輸出 "hellohellohello"

# 範例:變數命名和基本資料型別
x = 5  # 整數
y = 3.14  # 浮點數
name = "Alice"  # 字串

# 範例:資料型別轉換
x_str = str(x)  # 將整數轉換為字串
y_int = int(y)  # 將浮點數轉換為整數

# 範例:運算元
result = x + y  # 算術運算
print(result)

# 範例:字串複製
hello = "hello" * 3
print(hello)

內容解密:

以上程式碼展示瞭如何在 Python 中使用變數、基本資料型別、資料型別轉換和運算元。變數 xy 分別儲存整數和浮點數值,而 name 儲存了一個字串。資料型別轉換示範瞭如何使用 str()int() 函式在整數和字串之間進行轉換。運算元示範瞭如何使用 + 運算元進行算術運算。最後,字串複製示範瞭如何使用 * 運算元複製字串。

圖表翻譯:

@startuml
:變數命名; --> :基本資料型別;
:B; --> :資料型別轉換;
:C; --> :運算元;
:D; --> :字串複製;
@enduml

以上 Mermaid 圖表展示了 Python 中變數、資料型別和運算元的邏輯流程。首先,變數命名定義了變數的名稱和儲存的值。接下來,基本資料型別介紹了 Python 中的基本資料型別,包括整數、浮點數和字串。然後,資料型別轉換示範瞭如何在不同資料型別之間進行轉換。運算元部分展示瞭如何使用不同運算元進行算術、比較和邏輯運算。最後,字串複製部分示範瞭如何使用 * 運算元複製字串。

變數的初始化和覆寫

在 Python 中,變數是透過指定運算子 (=) 進行初始化的。當你第一次為變數指定時,它就被建立了。例如:

eggs = 2

這裡,eggs 這個變數被初始化為整數 2

之後,你可以使用這個變數在表示式中,與其他變數和值一起使用。例如:

spam = 40
print(spam + eggs)  # 輸出:42

這裡,spameggs 這兩個變數被加在一起,結果是 42

如果你為變數指定一個新的值,它將覆寫原有的值。例如:

spam = 40
spam = spam + 2  # 覆寫 spam 的值
print(spam)  # 輸出:42

這裡,spam 的值被覆寫為 42

變數名稱

選擇一個好的變數名稱對於程式的可讀性非常重要。一個好的變數名稱應該能夠描述它所包含的資料。例如:

name = 'John'
age = 30

這裡,nameage 這兩個變數名稱清楚地描述了它們所包含的資料。

Python 有一些命名限制,變數名稱必須遵守以下規則:

  • 不允許有空格。
  • 只能使用字母、數字和底線 (_) 字元。
  • 不允許以數字開頭。
  • 不允許是 Python 的關鍵字,例如 ifforreturn 等。

以下是一些合法和不合法的變數名稱示例:

合法變數名稱 不合法變數名稱
hello_world hello world
foo_bar 123abc
abc123 if

變數名稱規則

在 Python 中,變數名稱有一些規則需要遵守。首先,變數名稱不能包含特殊字元,例如 current-balance 中的連字號(hyphen)是不允許的。同樣,變數名稱不能以數字開頭,例如 4account 是不允許的。

無效變數名稱

以下是一些無效變數名稱的例子:

  • current-balance:連字號(hyphen)不允許
  • current balance:空格不允許
  • account4:不能以數字開頭
  • _42:雖然可以以底線(underscore)開頭,但不能以數字開頭
  • TOTAL_SUM:特殊字元如 $ 不允許
  • hello 'hello':特殊字元如 ' 不允許

有效變數名稱

有效的變數名稱應該只包含字母、數字和底線(underscore),且不能以數字開頭。另外,變數名稱是區分大小寫的,這意味著 spamSPAMSpamsPaM 都是不同的變數。

編碼風格和 PEP 8

PEP 8 是 Python 的官方編碼風格,它建議使用底線(underscore)來分隔變數名稱中的單詞,而不是使用駱駝命名法(camelCase)。然而,在實際應用中,兩種風格都可以使用,只要保持一致即可。

首個程式

要建立一個 Python 程式,你需要將指令輸入到檔案編輯器中。Mu 的檔案編輯器提供了一個類別似於 Notepad 或 TextMate 的環境,但它具有一些特殊功能,適合用於編寫原始碼。

檔案編輯器和互動式 Shell 的區別

  • 互動式 Shell 總是會顯示 >>>In [1]: 的提示符。
  • 檔案編輯器不會顯示這些提示符。

現在,你可以開始建立你的首個 Python 程式了。當檔案編輯器視窗開啟後,你可以輸入以下內容:

Python 程式設計入門

簡介

Python是一種高階程式設計語言,廣泛應用於各個領域。以下是使用Python撰寫的一個簡單程式,該程式會向使用者問候並詢問其姓名。

print('Hello, world!')
print('What is your name?')
my_name = input('> ')
print('It is good to meet you, ' + my_name)
print('The length of your name is:')
print(len(my_name))
print('What is your age?')
my_age = input('> ')
print('You will be ' + str(int(my_age) + 1) + ' in a year.')

程式碼解釋

  • print() 函式用於在螢幕上顯示指定的字串。
  • input() 函式用於從使用者那裡取得輸入。
  • len() 函式用於計算字串的長度。
  • str() 函式用於將整數轉換為字串,以便與其他字串進行拼接。

執行程式

要執行這個程式,首先需要儲存它為一個.py檔案,例如hello.py。然後,可以透過按下F5鍵或點選「執行」按鈕來執行它。當程式執行時,它會向使用者詢問其姓名和年齡,並根據輸入的內容進行相應的反饋。

程式結構

Python程式由一系列的陳述式組成,每個陳述式以換行符結尾。程式的結構可以透過空白行和縮排來體現。

####註解 註解是程式設計師用於解釋程式碼的文字。Python中的註解以#符號開頭,直到行末為止。例如:

# 這是一個註解

####函式 函式是可重複使用的程式碼塊。Python中的函式以def關鍵字開頭,後面跟著函式名和引數列表。例如:

def greet(name):
    print('Hello, ' + name + '!')

####變數 變數是用於儲存資料的容器。Python中的變數不需要事先宣告,可以直接指定。例如:

my_name = 'John'

Python Tutor

Python Tutor是一個線上工具,允許您一步一步地觀察程式的執行過程。它可以幫助您瞭解程式的執行機制和變數的變化。

Python 基礎入門

Python 是一種高階程式語言,易於學習且廣泛應用於各個領域。以下將介紹 Python 的基本功能和應用。

print() 函式用於在螢幕上顯示文字或其他內容。例如:

print("Hello, World!")

這將在螢幕上顯示 “Hello, World!"。

input() 函式

input() 函式用於從使用者接收輸入。例如:

my_name = input("請輸入你的名字:")

這將等待使用者輸入名字,並將輸入的內容儲存在 my_name 變數中。

字串連線

Python 中可以使用 “+” 運算子連線字串。例如:

print("Hello, " + my_name)

這將在螢幕上顯示 “Hello, " 後面跟著使用者輸入的名字。

len() 函式

len() 函式用於計算字串的長度。例如:

print(len(my_name))

這將在螢幕上顯示使用者輸入的名字的長度。

內容解密:

以上程式碼展示了 Python 中的基本函式和運算子。print() 函式用於顯示內容,input() 函式用於接收使用者輸入,"+” 運算子用於連線字串,len() 函式用於計算字串長度。

圖表翻譯:

@startuml
:開始; --> :輸入名字;
:B; --> :計算名字長度;
:C; --> :顯示結果;
@enduml

這個流程圖展示了程式的執行流程,從開始到輸入名字、計算名字長度,最後顯示結果。

執行結果

執行以上程式碼後,將會顯示使用者輸入的名字和其長度。例如,如果使用者輸入 “Al”,則程式將顯示 “Hello, Al” 和 “The length of your name is: 2”。

字串與數字之間的轉換

在 Python 中,當您嘗試將字串和數字使用 + 運算元相加時,會發生錯誤。這是因為 + 運算元只能用於兩個相同型別的值之間,例如兩個字串或兩個數字。

錯誤示例

以下程式碼會產生錯誤:

print('I am ' + 29 + ' years old.')

錯誤訊息:

TypeError: can only concatenate str (not "int") to str

解決方法

為瞭解決這個問題,您可以使用 str() 函式將數字轉換為字串。以下是正確的程式碼:

print('I am ' + str(29) + ' years old.')

輸出:

I am 29 years old.

str(29) 會將數字 29 轉換為字串 '29',然後就可以使用 + 運算元將其與其他字串相加。

其他轉換函式

除了 str() 函式之外,Python 還提供了其他兩個轉換函式:int()float()。這些函式可以將值轉換為整數和浮點數型別。

以下是一些範例:

>>> str(0)
'0'
>>> str(-3.14)
'-3.14'
>>> int('123')
123
>>> float('3.14')
3.14

注意,當您使用 int()float() 函式時,必須確保輸入值是有效的數字字串,否則會發生錯誤。

內容解密

在上面的範例中,我們使用 str() 函式將數字轉換為字串。這是因為 + 運算元只能用於兩個相同型別的值之間。透過使用 str() 函式,我們可以將數字轉換為字串,然後就可以使用 + 運算元將其與其他字串相加。

圖表翻譯

以下是使用 Mermaid 語法繪製的流程圖,展示了字串與數字之間的轉換:

@startuml
:數字; --> [str()] :str;
:B; --> [+] :其他字串;
:C; --> [print()] :print;
@enduml

這個流程圖展示瞭如何使用 str() 函式將數字轉換為字串,然後就可以使用 + 運算元將其與其他字串相加,並最終輸出結果。

資料型別轉換

在 Python 中,資料型別轉換是一個非常重要的概念。不同的資料型別有不同的用途和限制,瞭解如何在不同資料型別之間進行轉換是非常重要的。

使用 int() 函式

int() 函式可以將一個字串或浮點數轉換為整數。例如:

>>> int('42')
42
>>> int('-99')
-99
>>> int(1.25)
1
>>> int(1.99)
1

如上所示,int() 函式可以將一個字串或浮點數轉換為整數。但是,如果字串中包含非數字字元,則會引發一個 ValueError

使用 float() 函式

float() 函式可以將一個字串或整數轉換為浮點數。例如:

>>> float('3.14')
3.14
>>> float(10)
10.0

如上所示,float() 函式可以將一個字串或整數轉換為浮點數。

使用 str() 函式

str() 函式可以將任何資料型別轉換為字串。例如:

>>> str(42)
'42'
>>> str(3.14)
'3.14'

如上所示,str() 函式可以將任何資料型別轉換為字串。

輸入函式 input()

輸入函式 input() 總是傳回一個字串,即使用者輸入的是一個數字。例如:

>>> spam = input()
101
>>> spam
'101'

如上所示,input() 函式傳回了一個字串 '101',而不是整數 101。如果您想要對使用者輸入的值進行數學運算,您需要使用 int() 函式將其轉換為整數。例如:

>>> spam = int(spam)
>>> spam
101

資料型別轉換

在 Python 中,int() 函式用於將其他資料型別轉換為整數。例如,當你從使用者輸入中取得一個字串時,你可以使用 int() 將其轉換為整數,以便進行數學運算。

整數轉換示例

spam = '101'
spam = int(spam)  # 將字串轉換為整數
print(spam * 10 / 5)  # 輸出:202.0

在這個例子中,spam 一開始是一個字串,但經過 int() 函式的轉換後,它變成了整數。這樣,你就可以對 spam 進行數學運算了。

錯誤處理

如果你嘗試將一個不能被轉換為整數的值傳遞給 int() 函式,Python 會丟擲一個 ValueError 例外。例如:

print(int('99.99'))  # 丟擲 ValueError
print(int('twelve'))  # 丟擲 ValueError

這些例子中,'99.99''twelve' 都不能被轉換為整數,所以 int() 函式會丟擲錯誤。

向下舍入浮點數

int() 函式也可以用來向下舍入浮點數。例如:

print(int(7.7))  # 輸出:7
print(int(7.7) + 1)  # 輸出:8

在這個例子中,int(7.7) 將浮點數 7.7 向下舍入為整數 7

圖表翻譯:

@startuml
:字串; --> [int()] :int;
:B; --> [數學運算] :數學運算;
:C; --> [輸出] :輸出;
@enduml

這個流程圖展示瞭如何使用 int() 函式將字串轉換為整數,並進行數學運算。

數字與文字的等價性

在 Python 中,數字和文字是兩種不同的資料型態。雖然數字可以用文字表示,但它們在電腦中是不同的值。例如,整數 42 和字串 '42' 是兩個不同的值。

print('What is your age?')  # 問使用者的年齡
my_age = input('>')  # 讀取使用者的輸入
print('You will be ' + str(int(my_age) + 1) + ' in a year.')  # 輸出結果

在這個例子中,my_age 是一個字串,需要轉換成整數才能進行加法運算。使用 int() 函式可以將字串轉換成整數,然後再加 1。結果再使用 str() 函式轉換成字串,才能與其他字串連線起來。

資料型態的比較

Python 中的資料型態包括整數、浮點數和字串等。使用 type() 函式可以檢查一個值的資料型態。

print(type(42))  # <class 'int'>
print(type(42.0))  # <class 'float'>
print(type('forty two'))  # <class 'str'>

round() 和 abs() 函式

round() 函式可以將浮點數四捨五入到最接近的整數。abs() 函式可以傳回一個數字的絕對值。

print(round(3.14))  # 3
print(round(7.7))  # 8
print(abs(-5))  # 5

len() 函式

len() 函式可以傳回一個字串或列表的長度。

name = 'Zophie'
print(len(name))  # 6

數學運算與二進位制數字

在 Python 中,round() 函式可以用來四捨五入數字。例如,round(-2.2) 會回傳 -2。此外,round() 函式也可以接受一個可選的第二個引數,指定要四捨五入到多少個小數位。例如,round(3.14, 1) 會回傳 3.1,而 round(7.7777, 3) 會回傳 7.778

有趣的是,當數字的小數位是 .5 時,round() 函式會使用「銀行家四捨五入」(banker’s rounding)的規則,也就是說,如果小數位是 .5,則會四捨五入到最接近的偶數整數。例如,round(3.5) 會回傳 4,而 round(2.5) 會回傳 2

另外,abs() 函式可以用來取得數字的絕對值。例如,abs(25) 會回傳 25,而 abs(-25) 會回傳 25

現在,讓我們來談談二進位制數字。二進位制數字是使用只有兩個數字:0 和 1。這種數字系統被稱為二進位制(binary),也就是根據 2 的數字系統。二進位制數字可以用來代表所有的十進位制數字。

在電腦中,二進位制數字被用來儲存和處理資料。電腦使用二進位制數字的原因是因為它可以使用簡單的電子元件來實作,而這些元件相對較便宜。

以下是十進位制和二進位制的對應表:

十進位制 二進位制
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010

內容解密:

在上面的例子中,我們可以看到 round() 函式如何用來四捨五入數字,而 abs() 函式如何用來取得數字的絕對值。另外,我們也可以看到二進位制數字如何用來代表十進位制數字。

圖表翻譯:

@startuml
:十進位制; --> :二進位制;
:B; --> :電腦儲存和處理;
:C; --> :簡單電子元件;
:D; --> :相對便宜;
@enduml

在這個圖表中,我們可以看到十進位制數字如何被轉換成二進位制數字,而二進位制數字又如何被用來儲存和處理資料在電腦中。

從程式語言的底層設計來看,Python 的資料型別系統是其靈活性和易用性的根本。本文深入探討了 Python 的基礎資料型別、運算元、型別轉換以及變數命名規則,並佐以程式碼範例和圖表說明,清晰地展現了這些核心概念的應用。分析 Python 的型別系統,可以發現其動態型別特性雖然簡化了開發流程,但也可能隱藏執行時錯誤的風險,需要開發者提高程式碼的測試覆寫率。對於初學者,理解變數的初始化、覆寫以及命名規則至關重要,這能有效避免程式碼錯誤並提升可讀性。展望未來,隨著 Python 生態的持續發展,預計會有更多型別提示工具和最佳實務出現,以協助開發者更好地管理程式碼的型別安全,並提升大型專案的程式碼品質。玄貓認為,掌握 Python 的基礎資料型別和運算機制是每個 Python 開發者的必備技能,這將有助於開發更穩健、高效的程式碼。