汪玥彤的學習歷程檔案 - 人工智慧 - Python 入門
 


歷程檔案 Portfolio

    Python 入門

    Python基本語法與練習

    好了,來實作看看吧!打開 Jupyter Notebook 應用程式、跳出  Jupyter Notebook 的編輯頁面就可以來撰寫我們的程式碼啦。

    python1.jpg

     

    1. Print:永遠是跟世界打聲招呼的第一個程式

    print語法是在print函式中放進你要印的東西,比如 print(我要印這個)。說聲 Hello World,跟程式的世界打聲招呼吧!

    python2.jpg
    第一個跟世界打招呼的程式!

    print的內容可以是變數(variable): print(a),數字(init): print(1234),或是字串(string): print(‘abc123’)

     

    2. Variable (變數)一切TypeError的泉源

    上面提到了變數,但這是什麼意思呢? 其實就是幫資料取個名字、把資料儲存起來。比如: 變數 = 資料,a = 123。當我們輸入a、就會找到123。

    變數雖然能儲存資料,但資料有很多種類型、所以就會有資料型態(Type)。舉例來說:

    • a = 123 , type(a)會告訴我們 init (整數)。
    • b = ‘456’ , type(b)會告訴我們 str (字串)。
    • c = 8.70 , type(c)會告訴我們這是一個 float (浮點數)。
    py3.jpg

    數值可以做運算:

    py4.jpg

     
    也可以使用各種你知道的函數:

    但不同的形態運算要注意,不要把字串和數值加在一起、否則會產生TypeError。

    記得學會看錯誤訊息再回去看自己寫錯了什麼。

    那該怎麼辦呢?

    別怕別怕,若要運算則需要做型態轉換,可以用 int(), str(), float() 來轉換變數型態。可以看到下圖,int() 將字串’456’轉成整數、str() 將整數 123 轉成字串。

    謹記:「Error都是暫時的,沒有解不掉的Bug,莫忘心靈祥和。」

    就算身邊沒有程序激勵員也要保持好心情喔(啾咪^_<
     
     

     

    3. Input:讓使用者輸入資料唄

    這邊我們使用的是Python 3的環境,使用的是 input;如果環境是Python 2的朋友注意是用 raw_input噢,Python 2的input有別的意義。

    input的功能是讓使用者所有輸入的資料會被當成字串儲存起來,需要時再作轉型。舉例而言:

    • a = input() : 它會等你輸入,並以字串(string)的形式存入 a 這個變數中。
    • b = input(‘Your Name: ‘) : 在螢幕上會出現 ’Your Name: ’的提示,並把資料以字串(string)形式存入 b 這個變數中。

    記得這個數字289是字串的形式喔~

     

     

    ● 小練習

    請寫一支Python程式,能讀取兩個整數,並把他們的四則運算印出來。(提示: 用input()印出來的東西是字串, 記得轉型噢!)

    py5.jpg

     

     

    4. If-Else 日常的邏輯判斷

    別說你沒用過 if-else 函數式,我們每天都在面臨 if else 的抉擇──如果(if) 百貨公司周年慶到了: 那就是大採購的時間啦! 否則(else)我們就晚點再買。

    照樣造句一下還有──如果 (if)手機快沒電: 我就乖乖回家充電! 否則 (else) 我就繼續抓寶可夢。

    來看一下 if-else 語法解說。if 寫完之後接冒號、下一行縮排後開始寫要做什麼事情。注意 else 是否則的意思,就不用再寫一次條件了。

    但如果我們不只有兩層 (周年慶就去買東西、否則就等下次),可能有好幾層條件呢?

    比如: 如果我們平板電池的電量還很高、就去抓寶可夢;電池電量快沒了、就乖乖回家;如果電池電量普普通通、看看小說就好。

    把這件事情用Python表達出來吧!

    py6.jpg

    電池只有50,在30~80之間,因此看看小說就好!

    if-else主要用在邏輯運算的判斷上:

    • > 大於
    • < 小於
    • >= 大於等於
    • <= 小於等於
    • == 等於
    • !== 不等於

    或是布林值(Boolean):

    • true 真的
    • false 假的
    • and 且
    • or 或
    • not 非

    不小心買到Samsung Note 7、聽說電池快沒電時容易有爆炸的風險,怎麼辦?! 利用邏輯運算來提醒我們這個危機吧!

    py7.jpg

    ● 小練習

    寫一支Python整數機,第一步讓使用者輸入想要做的符號運算,比如「+, -, *, /」,第二步讓使用者輸入’整數1’和 ‘整數2’,最後讓這兩個整數進行運算。如果輸入的運算符號不是「+, -, *, /」,便輸出「錯誤」。

     

     

    5. For Loop 轉圈圈吧哈姆太郎

    如果要把0到9的數字印出來,應該怎麼做呢?

    嗯當然你可以這樣做…

    但如果今天是要從0印到100呢? (´・ω・`) …

    我們之所以寫程式,就是為了要讓程式能自動化地幫忙做一些事情,這樣顯得太沒有效率了。因此在這邊我們需要寫一個「迴圈」(Loop)。首先來介紹一個最基礎的Python迴圈「For Loop」。

    比起痛苦地寫十行print,引進For迴圈後、區區兩行便能解決了:

    不是很看得懂程式碼的意思嗎? 別緊張,這邊來解釋一下這個式子的涵義。若要枚舉出從0到n-1的數字,寫法是:

    for [變數名稱] in range(n): (縮排) print([變數名稱])

    來試試看:

    在這裡的n=10,是不是把0~9 (n-1)的數字都印出來了呢?

    到底range又是什麼意思呢?

     

    事實上 range(n) = range(0, n),簡單來說就是個產生器,你可以在這個range範圍中拿資料、拿完到n-1為止。以range(3)為例,第一次拿到資料0、第二次拿到資料1、第三次拿到資料2,然後就結束了。

    讓我們重新看一下for函數結構:

    for [變數名稱] in range(範圍, 比如從數字X到Y):    (縮排) 做一件事    (縮排) 做一件事

     

    瞭解的話,就讓我們來做個小練習吧!

    ● 小練習

    請輸出一個九九乘法表。(提示1: for loop裡面也可以有第二個for loop噢!)

    py8.jpg

    進階版: 如果不希望print出來的結果換行且要有空格,可以使用end=’ ’;若要再換行可使用end=’\n’。

    事實上range的數列是有間距的喔!

    range 的結構是:range(起點, 終點, 間距),其中的間距預設為1 、比如 range(0, 6) = range(0, 6, 1) 。代表從 0 到 5,每次加 1 的意思。

    分別印出:

    (1) 從1到10、每次加2的數列;

    (2) 從10到2、每次-3的數列 吧!

    ● 小練習

    請做出一支能猜數字的程式:每次讓使用者猜一個整數,若猜對就輸出Bingo;使用者最多可以猜3次。(提示: Bingo後可以使用break來離開迴圈)

     

     

    6. List:能無限儲存資料的格子

    想像一下,若今天有三筆資料要計算時,我們會這樣寫:

    a = 1b = 2c = 3

     

    … 那如果你有成千上萬筆資料呢?

    再想像一下,如果不知道使用者要輸入多少資料又要怎麼辦呢?

    in = input()a = in[0]b = in[1]

     

    這樣真的行嗎…

    「神說要有了List,所以有了List。」- 來自深海大鳳梨裡的神祕訊息。

    繼續運用你的想像力!我們現在有個異次元裡的櫃子,它有無限個格子,第一格可以放東西、第二格也可以放東西…以此類推。

    櫃子裡可以放任何東西,我們會用一個數字代表東西放在櫃子中的第幾層格子,這個數字就叫做 Index (索引)。

    把櫃子的概念換成 Python 的 List 語法,就會變成:放在第 0 層的變數、放在第 1 層的變數… 這個數字就是 Index(索引),而變數就是我們塞進去的資料。

    一個Python的List長相如下,以中括號[] 包起來、逗號, 分隔:

    a = ['Lynn', 0.87, 1234, True]

    這裡的 a 就是一個 List,第 0 格放的是 Lynn 這個字串、第 1 格放的是 0.87 這個浮點數、第 2 格放的是 1234 這個整數、第 3 格放的是 True 這個布林值。

    有了格子的概念後,我們可以使用 a[第幾格] 來取出變數,比如 a[0] 代表’Lynn’、a[3] 代表True。可以看到由於 a[4] 並不存在,因此會出現 IndexError的警示。

    要如何知道一個List有多長呢? 我們能使用 len([list變數名稱])

    a = [1, 3]len(a) = 2

     

    在拿到 List 的長度後,讓我們能來玩一點變化吧!比如 List 加上上面教學的 For Loop 看看會發生什麼事:

    若要更簡潔一點的話,由於 in 這個關鍵字有「在… 之中」的意思,in range(0, 3)代表在0~2之中。因此能改成:

    py9.jpg

     

    ● 小練習

    現在有一個 list a = [1, 3, 5, 7, 9],請對每一個元素都平方後印出來,且須將 a 也變成 [1, 9, 25, 49, 81]。

    來玩玩更多list的操作吧!

    • 建立一個空的list: a = list() 或是 a = []都可以
    • 動態增加元素:

      • list.append(x): 把變數x塞到list的最後面
      • list.insert(i, x): 把變數x塞到i這個位置上
      • list.pop(): 把list的最後一格丟掉
      • list.pop(i): 把list的第i格丟掉
      • list.remove(x): 會把第一個出現的變數x拿掉
      • list.clear(): 把list內的資料全部清光光
    • 與常見函數的結合:

      • max(list): 找出list中最大值
      • min(list): 找出list中最小值
      • sum(list): 找出list數字總和

    ● 小練習

    五次數學段考的成績分別為10、30、50、70、90分,算出平均後,老師發現大家考太爛、只好將成績開根號再乘上10 (提示: 成績**0.5*10),再算出一個新平均。

    請印出: 1. 五次成績; 2. 平均成績; 3. 五次新成績; 4. 新分數的平均。

    以為就這樣結束了嗎? List 還有切片 (Slice) 的功能哦大大!

    Python 的 slice 功能讓我們能拿出 List 櫃子的一部份。

    list[start: end]#拿到 list 的start ,start+1, start+2, ..., end-2, end-1

    針對slice語法,讓我們深入介紹一些細節部分:

    • list[start: end]startend都可以省略不寫
    • start的預設為0
    • end的預設為len(list)
    • liest[ :end]代表 0~end-1
    • list[start: ]代表start~len(list)-1
    • list[ : ]代表0~len(list)-1

    ● 小練習

    來辦場Party吧! 輸入十個整數、存入一個名為people清單中 (表示我們的宴客人數);之後會有五次詢問,每次會輸入清單開始和結束的位置,再輸出從開始到結束位置的總和。

     

    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應