發表文章

目前顯示的是有「python」標籤的文章

透過Vue實現限制數入字數

我們都知道,平常在社群網站上會限制使用者輸入的字數。最具代表性的網站就是Twitter,Twitter限制一般使用者每次發表文章的字數在140字以內。讓使用者用最簡短的文字來表達想法。對於優化使用者體驗比較好的方式是,當使用者在輸入的同時,提示使用者還有多少字可以輸入,當使用這輸入的字數達到限制時,及時地停止使用者繼續輸入。 像這樣子限制使用者輸入字數的機制要如何來實現呢? 有兩的點需要注意: 如何計算使用者輸入了多少字? 當使用這輸入的字數達到限制時,該如何停止繼續輸入? 今天我們就要透過Vue.js來製作一個可以幫我們控制輸入字數的程式。首先,我們先準備好需要的HTML檔案。 <!DOCTYPE html> <html lang=“zh-TW”> <head> <meta charset=“UTF-8” /> <meta name=“viewport” content=“width=device-width, initial-scale=1.0” /> <meta http-equiv=“X-UA-Compatible” content=“ie=edge” /> <link rel=“stylesheet” href=“https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css” integrity=“sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO” crossorigin=“anonymous” /> <title>Start</title> </head> <body> <div id=“app” class=“container”> <div class=“row”> <div class=“col”> <textarea cols=“30” ...

Django--客製化Hello 頁面--關於urls.py 與 views.py 的說明

要透過Django製作網站,urls.py可說是一切的起點。 由於每當使用者在瀏覽器上面輸入網址的時,urls.py 就會帶領使用者到達指定點位置。因此,我們可以在urls.py 裡設定每個網址可以到達的地方。 例如,下面是urls.py預設的狀態( 首度安裝 完成後的狀態)。當我們啟動網站時,只要進入 http://127.0.0.1:8000/  就可以看到Django預設的首頁。 from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ] 如果我們在瀏覽器的網址列中輸入 http://127.0.0.1:8000/admin/ 的話,urls.py 會帶我們去 admin指定的 admin.site.urls 頁面。( http://127.0.0.1:8000/admin/login/?next=/admin/ ) from django.contrib import admin from django.urls import path urlpatterns = [ path('hello/', admin.site.urls), ] 如上面的程式碼,現在我們將path('admin/', admin.site.urls), 改為 path('hello/', admin.site.urls), ,在瀏覽器的網址列中輸入 http://127.0.0.1:8000/admin/ ,將不再導向 admin.site.urls 頁面,反而會告訴你 : Page not found (404) 。The current path, admin/, didn't match any of these. 但是,如果你在瀏覽器的網址列中輸入 http://127.0.0.1:8000/hello/ 時,urls.py 會帶我們去 hello 指定的 admin.site.urls 頁面。( http://127.0.0.1:8000/hello/login/?next=/h...

Django下載與安裝

圖片
下載與安裝Django有下面幾個步驟: 在撰寫Django程式碼之前,先建立一個虛擬環境,並且在這個虛擬環境裡面開發你的程式。 由於virtualenv最大的好處是,可以讓每一個python項目單獨使用一個環境,而不會影響python系統環境,也不會影響其他項目的環境。這樣子的話,如果開發項目中的程式有什麼問題,也不會破壞到原本電腦系統中的其他項目。 因此,我們在安裝Django的步驟前面建議先加上建立虛擬環境的步驟。如果你不想要建立虛擬環境的話,也可以直接從第二步驟開始安裝Django。 步驟一:建立虛擬環境 virtualenv安裝的位置在 venv/中的 lib/site-packages/目錄裏,而不是在原本系統的python的lib/site-packages目錄裏。換句話說,virtualenv 創建的虛擬環境與主機的 Python 環境無關,你主機配置的libary不能在 virtualenv 中直接使用。你需要在虛擬環境中利用 pip install 再次安裝配置後才能使用。 1. 在python 3下安裝 virtualenv,用這樣創建的 virtualenv 預設的 python版本是python3。 pip3 install virtualenv 2. 透過virtualenv 建立一個虛擬環境:venv python3 -m virtualenv venv 3. 進入venv資料夾中 cd venv 4. 啟動虛擬環境 source bin/activate 步驟二:在虛擬環境中安裝Django 你可以安裝最新版本的Django pip install django 或者,你可以指定特定的Django版本來安裝,例如下面的指令我們指定要安裝Django 2.0.2版。 pip install django==2.0.2 在目前這種做法下,你可以重複第一步驟來開啟多個虛擬環境,並且在每個虛擬環境中安裝不一樣版本的Django。這些程式雖然版本不同,但是它們只在自己的虛擬環境中發會作用,虛擬環境與虛擬環境相互之間卻不會互相干擾。 步驟三:透過 django-admin 開啟一個專案 接下來你可以透過 django-admin 開啟一個專案,下面...

Python基礎篇--迴圈 For Loops and While Loops

圖片
Python的主要迴圈指令有二,分別是For迴圈與While迴圈。兩者的差別在於while迴圈不會預設重複的次數,也就是說如果使用while迴圈時,可以無限次的重複。如果預先知道需要重複多少次的話,使用For迴圈會比較恰當。 For迴圈(For loops) 如果預先知道需要重複多少次的話,採用for迴圈是比較洽當的。他的語法如下: for 變數 in 串列: 程式區塊 例如下面的例子。其中i是變數,mylist是串列 ,而程式區塊的內容則是 print(i)。 mylist = [1,2,3,4,5] for i in mylist: print(i) 上面的程式碼執行後,電腦會陸續的將mylist串列的內容印出來,就像下面一樣。 當一切元素都處理完畢後,就會結束for迴圈。 另外,也可以使用range()來設定迴圈的執行次數,其語法如下: for 變數名稱 in range(重複次數):   重複執行的程式 巢狀迴圈 for迴圈也可以放在另外一個for迴圈裡面,這樣就成為所謂的巢狀迴圈。巢狀迴圈的執行次數是各層迴圈的乗績。 利用這個特性,我們可以透過巢狀迴圈製作九九乘法表。 for x in range ( 1 , 10 ): for y in range ( 1 , 10 ): product = x * y print ( "%d x %d =%d" %(x , y , product) , end = "" ) print () While 迴圈(While Loops) 如果條件符合的話,程式區塊就會被執行。反之,若條件不符合時,就結束迴圈繼續執行迴圈後面的程式碼。也就是說while迴圈會在條件為True的狀況下,重複執行內部的程式區塊內容。while迴圈通常沒有固定執行的次數,語法如下: while 條件:     程式區塊 下面的例子。條件是 n <3 ,程式區塊的內容是:print("name") n = 0 while n < 3 print ( "name" ) 需要特別注意...

Python基礎篇--[如何安裝Pyrhon環境]

圖片
以前想學寫程式,卻都因為程式碼複雜難懂而半途放棄了,直到發現Python之後... Python是一種物件導向、直譯式的程式語言。相對其他程式語言來說,由於Python的語法簡單,比較像是一般的英語一樣,對於初學者來說,是個比較容易入門的程式語言。並且Python的應用領域十分廣,舉凡作業系統、網站、資料科學、網頁資料蒐集、大數據分析、影像辨識處理、遊戲軟體製作、自動化文件處理等等,都可以辦到。看起來學習Pyrhon似乎是一個不錯的投資。 Python可以在多種平台開發與執行。不論是在Mac、Windows或Linux上面都可以執行Python。本文主要在說明macOS系統上需要的工具。 若Mac電腦的系統版本為 OS X 10.8以上的話,Python 2.7已經內建在裡面了。所以,如果不用Python3的話,是不需要另外安裝的。 如果要安裝最新的Python的話,請到 Python網站 下載軟體。 (https://www.python.org/downloads/) 安裝完畢之後,可以透過終端機輸入:python3 --version 檢查是否安裝成功。 python3 --version IDE編輯器 編輯Python可以在Python系統內建的IDLE編輯器裡面撰寫程式。但是IDLE編輯器功能上面較為陽春。一般人會選擇其他工具進行撰寫。 PyCharm CE 你可以在PyCharm CE中建立Python文件、編寫與編譯,並在console中顯示執行的結果。 Anaconda 包含常用的科學與資料分析模組,內建Spyder編輯器與Jupyter Notebook編輯器。 安裝Anaconda 步驟為: 1. 首先,您可以從 https://www.anaconda.com/download 安裝Anaconda。 接下來可以選擇您要執行Python的作業系統,在這裡我選擇的是macOS。 有兩個版本可供選擇:Python 3.6和Python 2.7,選擇版之後點擊『64-Bit Graphical Installer』進行下載。 依照步驟指示安裝完畢之後。就可以在mac的Launchpad中可以找到名為“Anaconda-Navigator”的圖示,...

Python基礎--讀取檔案、寫入檔案

一般來說,我們都會把資料儲存在檔案中。如果我們想要分析資料的時候,必須先將資料從檔案中取出並且讀取它。因此,我們可以透過撰寫Python程式碼來取出檔案並且讀取檔案裡面的資料,作為分析資料的前置準備。 如何在預先設定的資料夾中產生一個檔案? 如果想要打開電腦裡面的檔案,只需要下幾行Python程式碼,就可以開啟檔案。 透過下面程式,我們可以在預先建立的in資料夾裡面建立一個檔案testing.txt。 其中open表示開啟檔案,而該檔案的路徑在電腦的  in/testing.txt,這裡使用 in/而不是/in/表示我的python 檔案與in資料夾在同一個層級,你也可以已照您的需要使用不一樣的電腦路徑。 另外,”w”表示寫入模式。(還有“r”與“a”等分別代表不一樣模式的參數可以選擇 ) myfile = open("in/testing.txt", "w") 執行上面的程式後,可以去in資料夾裡面檢查是否已經產生了一個testing.txt檔案,如果檔案存在的話,就表示已經成功了。 然後,在用下面程式關閉檔案。 file.close() 可見,Python是一個簡潔的程式語言。接下來,我們進一步來看這幾個程式碼所代表的意思。 open()函數 open函數是內建的函數。如前面展示,open函數可以開啟指定的檔案,並對檔案進行接下來的讀取或修改寫入等行為。 如果想知道open函數的所有功能,可以在終端機輸入help(open)。如下所示,你可以看到open可以使用的八種參數: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) open函數最簡單的用法是讀取檔案,你只要透過下面語法就可以讀取檔案: open("file") 其中的filename,就是檔案名稱,如果檔案與程式不在同一個資料夾目錄的話,需要寫上檔案路徑。路徑可以是相對路徑也可以是絕對路徑。 open("file","mode")...

Python基礎篇--[字典與集合]

圖片
什麼是字典? 回想看看我們平時使用字典的方式。(我說的是實體書而不是線上字典網站)當我們使用字典查詢某個字彙時,需要先利用索引找到大致的位置,然後再翻到該詞彙的頁面確認其意義。 Python的字典(Dictionary)資料類型,類似於一般的字典。是將所有資料一組組的配對成「索引標題」與「對應的資料」儲存起來。其中的「索引標題」就是這個資料的 Key(鍵),「對應的資料」也就是這個資料的 Value(值),Value 可以是數值也可以是字串。由於這樣子的結構,我們就可以使用Key(鍵),取得Value(值)。 字典的語法如下,將所有元素放在大括號{}裡面: {'key1': value1, 'key2': value2, 'key3': value3, ....} 如果用在實際例子會是這樣: student = {"first_name": "小花","last_name":"王", "age":18 } 字典的使用方式 我們繼續以上面的students為例: student = {"first_name": "小花","last_name":"王", "age":18 } .keys() keys()可以列出所有索引值。例如: student.keys() .values() .values()可以列出所有內容資料。例如: 注意:keys與values都是複數,都有s。不要忘了。 .pop() 如果我們想要移除字典裡面的一整組索引與內容資料(Key與Value)的話,可以用pop(): student.pop("last_name") 如此,last_name這一整組資料就被刪除了。字典裡面只剩下first_name與age了。 .items() .items()可以取得字典中元素的組合。例如: student.items() 可以取得student字典中所有的key與value元素的組合。 ....

Python基礎篇--[串列與元組]

圖片
之前提到過Python的資料型態包括:數值、邏輯、字串、串列、元組、字典與集合等等。其中串列、元組、字典與集合是Python的複合式資料型態。這一篇我們要來談談其中的串列與元組型態。 List串列資料型態 串列又稱回清單或列表,與其他語言中的陣列(Array)相同。串列的角色是用來儲存大量有序資料的記憶空間。每個串列擁有一個名稱作為識別標誌,串列中的每個資料稱為「元素」。最主要的特色是,儲存在同一個串列中的元素,都是以數字來當作是索引,作為操作的依據。 在使用串列的時候,只要在儲存的資料兩側加上中括號([])就可以了。 例如: my_list = [2,4,6,8,10] 如果用type()檢查my_list的型態,可以得到它是一個list串列。 串列的索引是從0開始,第一個索引值為0,第二個索引值為1,以此類推。 0 1 2 3 4 Int Int Int Int Int 2 4 6 8 10 因此, my_list[0] = 2 my_list[1] = 4 my_list[2] = 6 my_list[3] = 8 my_list[4] = 10 索引值可以是負數,例如「-1」表示最後一個元素,「-2」表示倒數第二個元素。 但是如果索引值超出串列的資料範圍,會有錯誤(IndexError: list index out of range)出現。 my_list[5] 如果您想要把一句英文拆成字母所組成的串列,可以使用list()來達成。 例如:有個字串message,我們可以用list(message) message ="Hello World" list(message) 同一個串列可以有不同的資料型態,串列也可以有其他的串列,稱作「多維串列」。要取出串列中的個別串列值,只要再多一個中括號索引值即可。 例如: p01 = ['apple', 5] p02 = ['banana', 10] p03 = ['or...

Python基礎篇『加減乘除』

圖片
說到Python的加減乘除,我們要討論的是『算術運算子』。算術運算子就是我們用來執行一般數學運算的運算子。嗯,這聽起來好饒舌。簡單來說,就是加減乘除商餘等基本的數學。 下面就是算術運算子的符號: 符號 意義 + 加 - 減 * 乘 / 除 % 取餘數 // 取商數 ** 次方 下面是算術運算子的簡單運算例子,可以在Python Shell中輸入下面的表示式: 1 + 2.5 會得到: 3.5 的結果。 又如, 2 - 3.5 會得到: -1.5 的結果。 乘法: 2 * 3.5 會得到: 7.0 的結果。 除法: 2 / 3.5 會得到: 0.5714285714285714 的結果。 次方: 3 ** 4 會得到: 81 的結果。 和數學一樣,每個運算元有其優先順序,我們稱之為「優先權」。算術運算子的運算順序從左至右:次方(**)會先運算,接下來是乘(*)、除(/)、取商數(//)、和取餘數(%)。如果想要改變計算的優先順序,可以使用括號。 例如: 2+3*10**2 會得到: 302 的結果。 如果使用括號來改變順序的話, (2+3)*10**2 會得到: 500 的結果。

Regular Expression - 正規表示式在Python的用法

圖片
正規表示式(Regular Expression可簡稱為 regex)是文字模式的表示方法,其功能十分強大,可用於處理字串的強大工具。如果學會用正規表示式處理問題的話,就意味著可以用較少的程式碼完成一件事情。一個別人可能要處理很久才得以搞定的問題,正規表示式的你可能只需要幾行程式碼就解決了。 然而正規表示式本身並不是Python所獨有的。在Python中如果要使用正規表示式的話需要匯入re模組,因為所有函示都寫在re模組內。一但匯入re模組後,就可以利用re 指定搜尋的字串樣式,然後從檔案中找出符合該樣式的字串,並加以處理。 使用的時候,需要先定義一個想要比對的「字串模式」,以及要被比對的「對象字串」。簡單說,就像是這樣: result = re.match(“He’,’ “Hello World” ) 在這裡,「He」是字串模式,「Hello World」是對象字串。 match() 前面說過,match() 可以取出比對項目,來對字串進行比對。 import re message = '請來電洽詢(02)2555-1011,或致電 2555-9999' mo = re.match('請來' ,message) if mo: print(mo.group()) 但是,如果要比對字串中間的字,match() 就無法找到了。例如我們如果用同樣的程式尋找「洽詢」: import re message = '請來電洽詢(02)2555-1011,或致電 2555-9999' mo = re.match('洽詢' ,message) if mo: print(mo.group()) 這樣子就找不到任何字串了。match() 不會傳回任何東西。 我們要如何修改上面這個程式? 在「洽詢」的前面加上「.*」符號的話,就可以匹配到洽詢這個字串,因為「.*」符號表示比對尋找任何數量的字元。 import re message = '請來電洽詢(02)2555-1011,或致電 2555-9999' mo = re.match('.*洽詢' ,message) if mo: print(mo.gr...

Python 基礎篇 -- [變數與資料型態]

圖片
什麼是變數? 首先,想像一下家裡的收納箱。你把一個寫著「一號箱」的標籤貼在這個收納箱上面。並且把一本書丟進這個收納箱內,然後把箱子封起來。此後,每當你尋找「一號箱」的時候,你就會找到那本書。再來,如果你把箱子打開拿出書本,換成一個馬克杯,然後一樣把箱子封起來。從此之後,每當你尋找「一號箱」的時候,你就會找到那個馬克杯。「變數」就像家裡的收納箱一樣,當程式設計者使用一個變數的時候,應用程式就會配置一塊記憶體給這個變數使用。並且以變數名稱做為辨識此記憶體區塊的標誌。 任何程式都會使用變數,變數通常用來儲存暫時的資料。 程式有各式各樣的資料型態,如果將各種資料依照不同的型態加以分類的話,不同的資料型態給予不同的記憶體配置,可以提高運作的效率。 如何使用變數? 詢問要如何使用變數的你,應該先問看看為什麼要使用變數。 使用變數,是因為透過這樣的方式,我們可以將重要的資料存在變數中以供給日後使用。 並且可以讓程式碼看起來簡潔有組織,有變動需要時也比較好變更。你可以透過下面的方式使用變數: name = value 其中,name 是「變數名稱」 = value是「變數值」。 「=」符號不是等於 上面的「=」符號在程式裡是『指定』的意思,也就是把右邊的值指定給左邊的變數。對於初學者來說,這個地方非常容易搞錯,要特別注意。這與我們以前學校學的數學運算符號不一樣,我們以前所認知的等號,在程式裡面要寫成「==」或「===」,兩個或三個連續等號。 例如:X = 5 表示,建立一個以X為名稱的變數,並且指定5為此變數的值。也就是說,當我們一看到 「=」符號時,就要先去計算右邊的式子,然後把結果放在左邊的變數裡面。 變數在命名時必須遵守一定的 命名規則 ,所以當你在建立變數的時候,請記要使用英數大寫、小寫以及底線等符號。 我們來猜猜看下面程式碼執行的結果為何? a = 1 a = 3 a = 5 print(a + a + a) 由於Python是由上而下執行程式碼的緣故,變數a會被後面行數的程式碼改變其變數值。直到第三行(a =5 )時停止改變,所以第四行列印出來的值就是 5 + 5 + 5 的結果。也就是15了。 變數的型態是什麼? 使用變數的時候,不用特別指定資料型態,因為Pyth...