本日的主題與前面數十篇有所不同,我們要介紹的是 ── Python!您可能有著相同的疑惑,原來大名鼎鼎的蟒蛇跟網頁也有關係嗎?帶著您的好奇,我們將會在日後的篇章慢慢向您解惑,不過,在解釋它是如何影響到我們的網頁專案前,我們還是有必要先了解一下Python的功用、語法…等內容的!
Python是一種廣泛使用的高階直譯式程式語言,它的優點在於它的程式碼語法可讀性高且簡潔(與英文語法相似),易於學習,卻不減功能。Python也可以在許多不同平台上執行,並具有大型標準程式庫,即意程式碼可供開發人員反覆使用,效率非常之高。
Python常用於網頁應用程式的開發、軟體開發和機器學習…等功能,它也可以與其他常用的程式設計語言,如:Java、C…等等一起搭配使用。如此高功能且易入手的程式語言,可以說是現今人人都必學的程式語言之一!
下載完畢後,在Vscode延伸模組搜尋python並下載!
這樣我們就可以創建.py
檔即可開始編寫Python囉。
或者去下載jupyter的延伸模組,創建 .ipynb
的檔案,就可以開始coding了
在介紹基本的資料形態時,我想先向您介紹一個實用的函式:
type()
函式,可以用來回傳此物件或變數的型別,這可以幫助我們在了解此變數是甚麼型態的,從而扼殺掉一些型態搞錯的低級錯誤。
print(type(123))
print(type("字串"))
而此處用到的print()
語法,式Python裡最基礎也最重要的函式,用以執行輸出我們的程式碼。
在Python中,變數表示的是某物件的名稱。可以理解為,將一資料(不論型態),存放在一容器中,並為該容器添加標籤名。
a = 5
print(a)
a , b , c = 1, 2, "hi"
print(a,b,c)
雖然它很方便,但是我在寫龐大的專案時,常常因為變數型態的錯誤,以致於除錯除到哭。
因此,在Python中我們可以這樣寫,提高辨識度:
variable:str = "我是變數"
number:int = 87
male:bool = True
與JavaScript相同,Python宣告字串必須使用 ” ”
或 ’ ’
。
"我是字串"
'我也是字串'
Python字串有著一個特別的特性:我們可以使用 六個引號 ””” ”””
來當註解。
且註解裡面的文檔是使用Markdown(輕量級標示)語法,這可以幫助我們提高程式碼的可讀性:
以上圖的方式Markdown後,下圖便會出現一個註解的panel:
我們可以使用索引值來查詢字串的內容,Python中,一樣是從0開始索引,範例如下:
s = "this is a string"
print(s[5])
print(s[10])
您甚至可以選擇抓取從第幾個到第幾個的數值:
反著抓也行:
也就是說,我們可以使用索引值做到類似for迴圈的操作:
與JavaScript全部都是「數字」的屬性不同,Python對於數字的分類可是很細的!
123456 #整數 int
3.14159 #浮點數 float
數字的操作:
#加減乘除
print(6+20) #26
print(6-20) #-14
print(6*20) #120
print(100/20) #5
#平方 & 根號
print(4**2) # 16
print(4**1/2)# 2
浮點數操作:
print(type(3.1415926))
print(type(3.))
print(type(3+3.14))
# 此為 3.14 * 10^5次方的表示法
print(3.14e5)
print(type(3.14e5))
# 此為 3.14 * 10^-5次方的表示法
print(3.14e-5)
print(type(3.14e-5))
在程式語言中,布林是個只有兩種值的原始類型資料,通常是true or false(真或假)。我們習慣將布林值用在條件式內,用以表達「成立」或「不成立」。
True
False
None
而在Python中,布林值必須是大寫開頭的。且布林值是可以當成數字做加減的!
但要注意,這樣的用法只有在Python和Mojo(Py的延伸,又稱Python++)中才能做唷。
if else在python內的語法,要注意後面一定要有:
的存在喔!
if():
elif(): #else if
else:
範例:
a=10;b=10
# 不等於
if (a==b):
pass
# 等於等於
if (a!=b):
pass
判斷 | python |
---|---|
相等 | == |
不相等 | != not() |
和判斷 | and & |
或判斷 | or ` |
下列引用我們前幾天的判斷句和流程圖:
「 如果 今天天氣好,我就去爬山。 要是 天氣不好的話, 則 去健身, 但不論 好或不好,都要回家吃飯。」
我們可以使用Python把上面的判斷句寫出來:
weather = True
if (weather):
print("去爬山")
else:
print("去健身房")
print("回家吃飯")
可以看到,weather已被宣告為True,所以後續的if判斷中,我們會去爬山,最後回家吃飯。
若weather被宣告不為True,後續的判斷便會去健身,但不論如何,都是要回家吃飯的。
陣列是程式語言中的一種靜態資料結構,能夠有順序且連貫性地儲存資料,每個儲存在陣列中的資料都有索引值:
在python中,使用 [ ]
即可定義一個陣列。
array1 = []
array2 = ["haha",True,123]
print(array2)
跟上面的字串相似,我們也可以使用索引值去找值:
names = ["rex","lynn","lawrence","viscose","jia_son","june"]
print(names[2])
names[2] = "帥哥" #將陣列中的第二位改為"帥哥"
print(names[2])
print(names[2:])
print(names[1:3])
print(names[::2])
值得注意的是,第三行跟第四行的程式碼。names[2] = "帥哥"
我們透過此行程式碼將串列中的”lawrence”改為”帥哥”。第四行的print(names[2])
,可以發現輸出結果確實變成”帥哥”了。
tuple就是翻版的陣列,使用 ()
做宣告,索引值的使用方式也相同,唯一的差別在於tuple內的值不能做更改。
tuple_name = ("rex","lynn","lawrence","viscose","jia_son","june")
print(tuple_name[2])
tuple_name[2] = "帥哥"
試圖為tuple內的值做更改,結果出現了:
在程式語言中,迴圈是一種常見的控制流程,可以理解為:「一件事情重複做,達到條件後則停止」。常見的迴圈有三種:for迴圈
、while迴圈
,那我們今天僅針對前兩者迴圈做介紹。
在下方程式碼中,我們的範例為:
「有一number 10,程式每跑一圈便減一,到0的時候就會停下來。」
number = 10
while (number > 0):
print(number)
number-=1
輸出結果如下:
for迴圈應該是我個人使用次數最多的迴圈了,然而,在Python中沒有像JavaScript的迴圈 for(let i=0;i<10;i++) {}
那麼複雜。
在Python中我們會這樣寫:
for i in range(10):
print(i)
我們也會搭配 range()
來使用for:
當然我們也可以對for迴圈設定起始值、終點值、遞增值:
for i in range(起始值、終點值、遞增值):
在Python中我們也可以使用list去跑for迴圈:
names = ["rex","lynn","lawrence","viscose","jia_son","june"]
for n in names:
print(n)
此程式碼中,會將names
內的值一個一個的往n
內丟,最後將n
一個個輸出。
有關此類的應用有很多,我們可以先定義一個大資料,而後使用for迴圈去對每個資料做運算。
我們也可以使用 enumerate()
函式 ,搭配到for迴圈裏面,除了得到所有的值以外,還能獲得其索引值:
字典是類似於JavaScript中,物件的存在。我們會使用大括弧 {}
來做宣告。
而裡面的內容便是將一個鍵對一個值做宣告:
dict = {
"name":"rex",
"age":17,
"male":True
}
print(dict)
dict["name"] = "帥哥" #改變dict中"name"的值
print(dict)
print(dict["age"])
我們可以這樣去找值或定義值:
Python除了內建的函式如print()
…等,我們也可以自行建構函式:
def func():
print("我是函式!!")
func()
為甚麼要建立函式?
我們在此製作一個使用傳入值做加減的程式:
def sum(a,b):
print("我愛吃韓式烤肉")
return a+b
print(sum(8,7))
關於物件導向的概念可以參考我們之前寫的這篇 ⇒ 【Day14】Javascript物件設計!我所知道的物件導向。,雖然講解的程式語言不同,但是概念都是一樣的。
在Python中,我們可以這樣去定義物件和建構物件:
class Person():
name = "rex"
age = 17
male = True
rex = Person()
print(rex)
print(rex.name)
物件建構子 & 傳入值:
提升物件可讀性:
我們在寫入物件時會發現這個panel,而這個東西是可以由我們自行定義的!
一樣是用六個”
進行註解:
class Person():
"""
## 這是Person物件
"""
name = "rex"
age = 17
male = True
def __init__(self,
name:str,age:int,male:bool) -> None:
"""
### 建構Person物件
---
傳入值:name,age,male
"""
self.name = name
self.age = age
self.male = male
rex = Person("rex",)
print(rex)
print(rex.name)
物件的方法:
class Person():
"""
## 這是Person物件
"""
name = "rex"
age = 17
male = True
def __init__(self,
name:str,age:int,male:bool) -> None:
"""
### 建構Person物件
---
傳入值:name,age,male
"""
self.name = name
self.age = age
self.male = male
def hello(self):
print(self.name,"跟你說你好")
rex = Person("rex",17,True)
viscose = Person("lynn",17,True)
lynn = Person("viscose",19,True)
rex.hello()
lynn.hello()
viscose.hello()
輸出結果如上。
那今天的Python教學就到這裡結束了,明天我們會深入探討Python的函式修飾器,接下來就可以介紹Python與網頁之間的關聯了。