iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
自我挑戰組

零基礎成為 AI 解夢大師秘笈系列 第 3

【零基礎成為 AI 解夢大師秘笈】Day03 - Python Basics III

斜槓學習 – 零基礎成為 AI 解夢大師秘笈

前言

系列文章簡介

大家好,我們是 AI . FREE Team - 人工智慧自由團隊,這一次的鐵人賽,自由團隊將從0到1 手把手教各位讀者學會 (1)Python基礎語法 (2)Python Web 網頁開發框架 – Django (3)Python網頁爬蟲 – 周易解夢網 (4)Tensorflow AI語言模型基礎與訓練 – LSTM (5)實際部屬AI解夢模型到Web框架上。

為什麼技術要從零開始寫起

自由團隊的成立宗旨為開發AI/新科技的學習資源,提供各領域的學習者能夠跨域學習資料科學,並透過自主學習發展協槓職涯,結合智能應用到各式領域,無論是文、法、商、管、醫領域的朋友,都可以自由的學習AI技術。

資源

AI . FREE Team 讀者專屬福利 → Python Basics 免費學習資源

歡迎各位學習 Python Basics 的讀者,參考自由團隊製作的教學影片!(目前教學影片仍持續拍攝、剪輯中,歡迎未來有興趣持續學習的讀者們,關注我們的 Youtube Channel ,我們將持續為各位讀者提供更多學習資源!)
Lesson00 Preface 課程前言
Lesson01 Variable 變數
Lesson02 Operator 運算子
Lesson03 Data Structure 資料結構

(讀者們在讀文章時,搭配實作 & Youtube 教學影片,可達到最大的學習效益喔!)

教學開始

Python Basics 03

這一單元會快速帶過常用的 Python 函式及一些功能,不太熟悉沒關係,之後常常用到就會囉!就讓我們先從基礎的知識學起!

1. 條件式 if – else

條件語法是通過一個或多個條件的執行結果(True或者False),來決定接下來要執行哪一段程式碼。

條件語句的執行過程:

if 判斷條件:
<執行程式碼……>
else:
<執行程式碼……>

x = 1

if x == 1:         # 判斷變數是否爲 1
  print('hi!')     # 輸出判斷結果
    
else:              # 否則
  print('None')    # 輸出判斷結果

if 語句的判斷條件可以用>(大於)、<(小於)、==(等於)、>=(大於等於)、<=(小於等於)來進行判斷。

當判斷條件有多個邏輯時,可使用 elif 來增加判斷的條件:

if 判斷條件1:
<執行代碼1……>
elif 判斷條件2:
<執行代碼2……>
elif 判斷條件3:
<執行代碼3……>
else:
<執行代碼4……>

number = 21     

if number >= 18:     # 判斷 number 是否大於 18
  print('eighteen')     
  
elif number == 21:   # 判斷 number 是否等於 21
  print('twenty-one') 
  
elif number >= 1:    # 判斷 number 是否大於等於 1
  print('one') 
  
else:
  print('not')      # 條件均不成立時輸出

依照上述範例,因滿足大於 18 的條件,所以程式碼會優先輸出 "eighteen" 。

若今天要判斷多個條件同時滿足,我們可以使用 and

num = 9

if num >= 0 and num <= 10:    # 判斷值是否在0~10之間
    print('between 0 and 10')

輸出結果:between 0 and 10。

如果條件判斷為取其一滿足即可,可以使用 or

number = 10
if number < 0 or number > 10:    # 判斷 number 是否小於0或大於10
    print('less than 0 or more than 10')
else:
    print('undefine')

輸出結果:undefine。

2. while迴圈

while 用於 ”反覆” 執行,意即在判斷條件下,反覆執行某段程式碼,以重複處理相同的任務

其程式碼編寫的結構為:

while(繼續的條件):
     <當條件成立時,執行的程式碼>

while 繼續的條件成立,就執行程式碼。執行完畢後,回到 while 再次判斷條件是否成立,若判斷成立就再次執行程式碼,執行完畢後,回到 while 再次判斷條件是否成立,...直到條件不成立,就跳脫 while 迴圈結束。

c = 0

while (c < 9):
   print(c)
   c = c + 1

看看上述實例,

一開始 c 為 0,while 迴圈設定:當c小於9,這個條件成立,因此他會print出c,然後再將c+1;再將新的c,也就是c+1,再回到while的條件進行判斷:當c小於9,條件依舊成立,因為1 < 9,因此他會print出新的c,然後c再+1,一直反覆上面的邏輯,while 會一直執行直到 c=9,判斷條件不成立時,停止迴圈。

其他在 while 常見的程式碼有 :

  • continue 跳過該次迴圈
  • break 退出迴圈
  • "判斷條件"若為常數,表示循環必定成立,如下範例:
i = 1
while i < 10:   
    i += 1
    if(i%2)> 0:     # 非雙數時跳過輸出
        continue
    print(i)         # 輸出雙數2、4、6、8、10
 
j = 1
while 1:            # 循環條件爲1必定成立
    print(j)         # 輸出1~10
    j += 1
    if j > 5:     # 當i大於10時跳出循環
        break
print('end')

因此若不使用break跳出迴圈,電腦就會持續反覆執行,也就是無窮迴圈(如下所示):

inifinty = 1
num = inifinty
while inifinty == 1 :  # 該條件永遠爲true,迴圈將無限執行下去
   num = num + 1
   print("You entered: ",num)
 
print("Never!")
# 記得break迴圈 (ctrl+break, ctrl+C...)

3. For 迴圈

for 迴圈會依序跑過所有資料,如一個list、一個字符串、或是一個數字範圍(range)。


for i in 'New York':     # 一個字幅串的範例,輸出會是一行一個字母
   print('當前字母 :',i)
 # 一個list 的範例,輸出會是一行一個項目


countries = ['Detroit','Arizona','Georgia']
for country in countries:      
   print('當前地名 :',country)

for後面的代號可以依據自己的偏好設定,但此代號仍屬於全域變數(global variable),而非區域變數(local variable);因此在使用上,千萬不用遇到已使用過的變數代號。

下面是一個判斷質數與否的程式碼,順便示範 for 搭配 else & range 的用法,有點複雜,若有不理解的部分也歡迎隨時與我們反饋喔!

for num in range(2,20):  # num 迭代 2 到 19 (loop num = 2 到 num = 19)
   for i in range(2,num): # i 迭代 2 到 num 
      if num%i == 0:      # 判斷 num 是否可以被 i (因數) 整除
         j=num/i          # 若有 i 可以整除 num,計算 j (另一個因數)
         print(num,"等於",i,"*",j) # 輸出數值的乘積
         break            # 跳出當前 for 迴圈(for i in range(2,num))
                          # 回到上一個外層的迴圈(for num in range(2,20))
   else:                  # 當 for 迴圈中(for i in range(2,num)),並無判斷出因數,即透過else輸出質數
      print(num, '是一個質數')

for 迴圈是 Python 常見的應用,巢狀迴圈(Nested loop) - 兩個for迴圈以上組成,雖然好用,但Python屬於高階語言,for的運算效能非常慢,因此還是盡量避免過多for 迴圈的應用,否則程式執行會消耗大量的運算資源與時間。

4. def 自定義函式

Python提供了許多內建函數,例如 print(),若有需要自己定義的函數,我們就能使用def來達成。
以下是簡單的規則:
• 以 def 開頭,後接函式名稱和小括號()
• 任何要傳入的參數/變數必須放在圓括號中間,並以逗號分隔。
• 最後以 return 為函式輸出結果。沒有輸出值的函式可以 return None 或不寫 return,不回傳任何值。

來看看簡單的範例 :

def printinfo(name,age=25):
   print(name)
   print(age)
   return None
 
#使用printinfo自定意函式
printinfo(age=33,name="Anthony")
printinfo(name="miki")

產生的結果如下:

Anthony
33
miki
25

5. From … import 載入套件

最後簡單說明載入套件的語法,順便介紹常用的套件,"from ... import" 和 import 都是使用 module 的方式;Python 內的 module 指的就是檔案,只不過這個檔案內通常有許多的函式供開發者做使用。

import 相當於導入的是一个資料夾,透過相對路徑使用 module 中的哪一個 function,也需要額外進行定義。

import 模組名稱
模組名稱.xxx # xxx 即為欲使用的 function 名稱

"from…import" 可直接從模組中,導入特定的 function

from 模組名稱 import xxx

本次 IT鐵人挑戰賽,我們後續會常使用的套件如下:

#爬蟲
import requests
from bs4 import BeautifulSoup  
#資料分析/處理
import pandas as pd
import numpy as np
#excel處理
import xlwt
import xlrd

後續我們如何使用這些套件,就讓我們繼續看下去!

邁向 AI 解夢大師 - 第三天

第三天的課程,我們學習到 Python 簡單幾個基礎程式邏輯、函示定義...,是不是發現 Python 跟英文語句的表達非常相似呢?若想學習一些更細節的語法,請參考:Python Basics 免費學習資源

每天一點一滴跟著自由團隊一起學習,讓我們從0基礎,三十天後一同成為 AI 解夢大師!

想更深入認識 AI . FREE Team ?

自由團隊 官方網站:https://aifreeblog.herokuapp.com/
自由團隊 Github:https://github.com/AI-FREE-Team/
自由團隊 粉絲專頁:https://www.facebook.com/AI.Free.Team/
自由團隊 IG:https://www.instagram.com/aifreeteam/
自由團隊 Youtube:https://www.youtube.com/channel/UCjw6Kuw3kwM_il39NTBJVTg/

文章同步發布於:自由團隊部落格
(想看更多文章?學習更多AI知識?敬請鎖定自由團隊的頻道!)


上一篇
【零基礎成為 AI 解夢大師秘笈】Day02 - Python Basics II
下一篇
【零基礎成為 AI 解夢大師秘笈】Day04 - Django I
系列文
零基礎成為 AI 解夢大師秘笈30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言