iT邦幫忙

2024 iThome 鐵人賽

DAY 3
1

本日重點

今天要介紹的是python的基礎型別重點
也是許多程式語言會用到的型別喔~~
Python的基本型別

每個基本型別說明會有: 三個步驟跟大家說

Step 1 : 基本型別的名稱
Step 2 : 使用時機跟範例
Step 3 : 程式碼範本

基本型別

在寫程式之中,不外乎就是要了解該程式語言的基本型別
在盡到說明前大家可以先看我畫的架構圖

https://ithelp.ithome.com.tw/upload/images/20240917/20121052wfWCHsXfws.png

大家可以參考英文名詞
再去想像一下在程式語言中會有什麼樣子的樣貌
基本上可以歸類九種型別

  • 數字(整數、浮點數、複數)
  • 字典
  • 布林值
  • 集合
  • 序列(字串、列表、元組)

對照英文則是

  • Numbers (Integers, Floats, Complex Numbers)
  • Dictionary
  • Boolean
  • Set
  • Sequence (String, List, Tuple)

先告訴大家兩個好用的語法

  1. 印出print() : 顯示的東西在螢幕上。也就是告訴電腦我要可以看到執行結果,通常命令交互式都會直接顯示計算結果。但如果是使用scipt模式的話,你想要把結果印出來,可以把它放到print()的小括號中間。

  2. 檢測型別type() : 這個功能是用來檢測型別是什麼的。使用方式也是把要檢測的東西放到小括號裡面。
    至於是什麼型別?? 就期待往下觀賞介紹搂~!!/images/emoticon/emoticon34.gif

先給大家看一下執行的結果!
https://ithelp.ithome.com.tw/upload/images/20240917/20121052MSdP1YLxxE.png

tips.
不知道,初次寫程式的小夥伴有沒有發現。
在第二行中明明已經有type了但是他卻沒有如期的顯示出來?😢
其實程式碼不是吃掉不做事了!
type("hello world") 是有執行的,但是你卻看不到!!
原因也很簡單,因為你沒有把執行結果print出來~
那其實運用包在小括號的原理
我們可以把程式由內向外,照邏輯順序包起來
也就是先type檢查-> 在印出這樣的順序

其實很多程式語言也會透過這樣的方式來運行喔~!

1.1 Numbers - Integers

  • Step 1 : 基本型別的名稱

整數型別(Integer Type):
學過數學的各位應該對這個意思不陌生。在 Python 中,整數型別也可以定義成int是一種表示沒有小數點的數字。數字可以正整數、負整數或零。

  • Step 2 : 使用時機跟範例
  1. 計算循環次數(for 迴圈): 後續會提到,這邊先破耿。我們希望電腦依照撰寫的邏輯來執行複數次或是會改變條件多次的動作,為了告訴電腦次數是否正確或是是否該停止運算,我們需要用整數來計算次數是否達到。
    比如說: 統計一周上班有幾次?

  2. 做數學運算,如加減乘除: 凡是數學加減乘除或是餘數運算都可以做到。

  3. 表示年齡、數量、索引值等: 大家可以思考一下,通常年齡、數量、索引都會是整數表達。

  • Step 3 : 程式碼範本

這邊可以直接在前面所教的命令交互模式或是腳本模式都可以運行
可以簡單來執行數學運算

# 假設你2024年18歲,10年後就是18+10
# 可以直接在python環境下執行

18+10 

# 按下Enter後就會看到螢幕上顯示
28

1.2 Numbers - Floats

  • Step 1 : 基本型別的名稱
    浮點數(Float): 跟數學相同,整數數字有小數點符號後面還有數字。

  • Step 2 : 使用時機跟範例
    使用於表示含有小數點的數字,如價格、重量、溫度等。例如: $10.5、 87.5kg、 35℃
    適合處理需要更高精度的數學運算,例如科學計算和測量數據。

  • Step 3 : 程式碼範本

# 今天假設在美國吃一碗牛肉麵35.5美金
# 加上一盤小菜14美金
# 可以在python輸入框寫

35.5+14

# 然後就可以看到螢幕顯示
49.5

1.3 Numbers - Complex Numbers

  • Step 1 : 基本型別的名稱
    複數(Complex):複數由實部和虛部組成,在python通常前面會有一個數字搭配後面的虛部數字連著j來呈現。

  • Step 2 : 使用時機跟範例
    複數由實部和虛部組成,通常在數學和工程應用中使用。

  • Step 3 : 程式碼範本
    https://ithelp.ithome.com.tw/upload/images/20240917/20121052Ps13QxU0m8.png

這邊可以看到python直接幫你處理複數的運算,是不是很方便壓~!?
/images/emoticon/emoticon01.gif

1.4 Dictionary

  • Step 1 : 基本型別的名稱
    字典(Dictionary ): 在python中又稱dict,字典是一種鍵值對(key-value pair)的數據結構,用於快速查找或存取數據。在其他程式語言中又稱Object。

  • Step 2 : 使用時機跟範例

使用方式: 可以透過{}大括弧表示,並且裡面索引值要使用""雙引號,接者加上:用來描述後面的值,值是任意的資料型別(整數、字串...等都可)。

需要索引值查找的資料都可以用這種型別。例如:會員資料(包含姓名、年齡、電話...等)

  • Step 3 : 程式碼範本

https://ithelp.ithome.com.tw/upload/images/20240917/201210524l6tRoGgrR.png

這邊可以清楚的看到
物件的結構可以表達一個人的詳細資料。
那麼人又可以包含姓名、年齡等索引

1.5 Boolean

  • Step 1 : 基本型別的名稱
    布林值(Boolean): 在python又稱bool用於表邏輯,也就是大家最常聽的對或錯。這在往後學習流程控制非常重要!!
    這邊提醒大家,python的布林值第一個字母一定要大寫,也就是True 跟 False
  • Step 2 : 使用時機跟範例
    常用於流程控制或叫做條件判斷。
  • Step 3 : 程式碼範本

# 大家可以輸入這行
print(type(True))  

#就會看到基本型別是bool
<class 'bool'>

1.6 Set

  • Step 1 : 基本型別的名稱
    Set(集合):一種無序且不重複的數據結構,用來存儲一組唯一的元素。集合中的元素不會重複,因此非常適合用來處理需要去重的數據。

  • Step 2 : 使用時機跟範例
    使用方式: 可以透過{} 兩個大括弧來定義,裡面透過""雙引號來表達每個與眾不同的項目。

去除列表或其他序列中的重複項。
快速查找是否存在某個元素(因為集合的查找速度比列表快)。
範例: 大家可以想像成餐廳的菜單 menu通常都會是獨一無二的品項。所以叫做set來記憶XDD

  • Step 3 : 程式碼範本
print({"apple", "banana", "cherry", "apple"})  # "apple" 會自動去重複的菜單

1.7 Sequence - String

  • Step 1 : 基本型別的名稱
    字串(String): Python內又叫做Str,其實就是很單純一串文字。

  • Step 2 : 使用時機跟範例
    表示文字或字符序列,如姓名、地址、訊息

  • Step 3 : 程式碼範本

向大家學習程式語言最常見的hello world

print("hello world")

1.8 Sequence - List

  • Step 1 : 基本型別的名稱
    列表(List): 在其他程式語言中又可以叫做Array(陣列),其實就是描述一個有排序的數據。跟Set不同的是它是可以重複資料的喔~!!

  • Step 2 : 使用時機跟範例
    多個數值增刪修查使用。
    大家可以想像最經典的關聯資料庫以及excel讀取出來的一行資料可以變成List型態。

  • Step 3 : 程式碼範本

# excel 班上同學的名字
["John", "Abby", "Roni] 

# 第二行excel資料的陣列表示國文考試分數
# 注意80可以重複喔!
[80,70,80]

1.9 Sequence - Tuple

  • Step 1 : 基本型別的名稱
    元組(Tuple): 元組是一種有序的不可變數據結構,用於儲存多個元素。

  • Step 2 : 使用時機跟範例
    座標或配置參數都可以想像成不能改變的數據。

  • Step 3 : 程式碼範本

# 台灣座標
(121, 23.5)

後續

其實今天的型別課程看起來很無聊
但實際上是寫程式的基礎
所以大家還是要照者去撰寫或判斷它的使用時機!!

可以給大家一些題目來思考~

Q1 : 請問電話適合用什麼型別?(數字?字串?)
Q2 : 請問我要看公司的人員名單適合用什麼資料型態!?
Q3 : 今天如果是進到一個網頁,看到有語言選項,工程師會怎麼定義與嚴選項的選單資料型別?

這些都是有趣的問題可以讓大家腦力激盪跟思考今天學的東西喔!!


上一篇
[Day1] 程式的起頭 - 工欲善其事,必先利其器
下一篇
[Day3] 程式語言的容器魔術箱 - 變數
系列文
從概念到應用:Python實戰開發學習之旅31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
gbaian10
iT邦新手 5 級 ‧ 2024-09-18 00:37:23

補充個小知識,bool 在 python 中是一個 int 的子類別,所以第一張圖的上下關係也許不完全正確?
不過如果是以初學角度來說,也許這樣的圖更方便理解,因為通常你也不太會把 bool 當作 int 來使用。

a = True
print(isinstance(a, int))  # True
print(issubclass(bool, int))  # True

官方 type 文檔: https://docs.python.org/3/reference/datamodel.html#numbers-integral

roni iT邦新手 4 級 ‧ 2024-09-18 22:07:09 檢舉

感謝gbaian10 大大的補充~!
其實架構圖我想表達的不一定是針對上下的絕對關係。
我更希望的是想表達學習一門程式或新技術的基礎建構思維。

另外就像大大表達的~我也不希望把bool當作運算使用。
像是pythone或js甚至C++ 11版都可以把布林值加減乘除做計算(true 當作1 false當作0)。

但某些程式語言是獨立的型別像是Java。
在 Java 中,boolean 是一個原始類型(primitive type)

大家可以試看看gbaian10補充的,print(True +10 ) 或是在瀏覽器 F12 的console使用javascript 直接完看看true *10 , false +1 之類的運算。但就像前面討論的,不是很希望這樣做~

我覺得會導致學習的人偏離掉它的初衷
true 跟 false當初就是想表達流程控制
我更希望讓大家吸起來的是另一種呈現的方式去學習
https://zh.wikipedia.org/zh-tw/%E5%B8%83%E6%9E%97_(%E8%B3%87%E6%96%99%E9%A1%9E%E5%9E%8B)

當然詳讀該語言的document可以強化你的作品或寫程式能力。
但我更希望學到的是,如何實作?跟從何下手的邏輯思考去帶這個主題!!

gbaian10 iT邦新手 5 級 ‧ 2024-09-18 22:10:56 檢舉

是的,正常人也不會做 True + True == 2 這件事情XDD
所以我覺得以新手面教學文來說,這樣教也是合理的!

我要留言

立即登入留言