2017年8月18日 星期五

Python ê 例 - 用 Python 掠股票的價數

頭前咱介紹 Python 上基本的用法佮概念,久--來,嘛真無聊。咱佇遮來介紹一个例,會當去網路去(sa)資料轉--來。這咧程式真簡單,頭到尾,無算空佮註解,差不多十

這篇是參考原文:How to scrape websites with Python and BeautifulSoup,另外佇 TechOrange 有華語的翻譯:附範例與完整程式碼!手把手帶著你用 Python 做出爬蟲、抓取網頁資料
毋過,伊毋是頂面 ê 例 Copy and Paste 就好,嘛是有一寡鋩鋩角角愛修整。而且原例是 Python 2 的程式,我會閣揣出方法來予伊踮 Python3 會使振動。

當然,你若會曉一寡網頁 ê 設計智識閣好。毋過,就算毋捌嘛免煩惱。因為,這款的寫法是一種 SOP ê 寫法。咱講个 SOP (台羅: e-su-oo-phi, 英文: Standard Operation Procedure),就是講只要你會電腦環境和我相仝,抑是差不多,干焦照文章內講个照步來共命令拍入去,你的程式就會振動。

啥乜是網 (Web scraping)?

網(Web scraping) 是一種踮網路頂,共你欲的資訊搜揣出來的技術。

你會問,咱用 Chrome, IE, Firebox, Safari 去看就好,那有啥乜特別咧? 咱佇遮講个揣資料,毋是一筆兩筆,是大量的資料。比如講,我干焦想欲知影一百間公司的股票這馬懸? 平均偌濟? 你當然會當一間一間去拍開,用鳥鼠一直點點點,揣著公司股票,伊記--落來。仝款的動作做一百改。每擺你拍開一間公司的網頁,干焦一咧數字niâ-niâ。。不而過,你會看著圖啦,公司的 li-li-khok-khok 的資料,這攏毋是你想欲--ê。這時,咱愛咱無愛 ê 物件鑢予清氣,咱欲愛ê物就好。

鑢網就是佇網頁中,你欲的物件--出來的技術。鑢網是叫電腦共你鬥做,毋是你家己去鑢。

開始

咱是想欲使用 Python 語言來鑢,閣加上伊的一咧程式庫 BeautifulSoup (台羅發音: piú-tho-hu-sup)。
  • 若是 Mac/Linux 使用人,本底就有 Python, 先檢查伊的版本。開一咧 terminal,拍 python --version ,你會當看著伊的版本是 2.7
  • 若是 Windows,參考Python 官網來安裝。
  • 因為咱目標是佇 Python3 頂仔運行,嘛愛檢查有 Python3 無? 佇我的 Linux (Ubuntu 17.04),是 python3。

閣落--來,咱安裝 pip,佇 terminal,
easy_install pip
easy_install3 pip
pip install BeautifulSoup4

注意: 這愛佇 superuser/root 的身份運行,有一寡系統直接佇頂仔三的命令前sudo 就有法度運行。

基礎

佇開始進前,咱先了解一寡 HTML (台羅:e-tshi-thi-emu-elo) ê 基礎和鑢網 ê 規則。


HTML 標籤(piau-tshiam)

你若已經知影 HTML tag, 會共這段--過。

簡單講,你佇遊覽器(英文: Browser,像 Google Chrome, Firefox, IE, Safari 等等) 看著 ê 網頁,毋是遊覽器實際看著 ê 網頁遊覽器看著 ê 網頁。你會使想做是電影抑是電視ê 劇本: 觀眾看 ê 戲,是先有劇本予導演拍戲,伊會寫一寡台詞無 ê 物件,親像表情,場所來予演員搬戲。HTML 就是劇本,Tag (標籤) 就是共遊覽器講這咧所在个字是用啥物字體,大細,色緻,遊覽器照咧做出ê,就是你看著--ê。

<!DOCTYPE html>
<html>  
    <head>
    </head>
    <body>
        <h1> First Scraping </h1>
        <p> Hello World </p>
    <body>
</html>


頂仔這段,就是上基礎 ê HTML 網頁。

1. <!DOCTYPE html>: HTML 定著愛用這款 ê 型態宣告 (Type Declaration).
2. 規个 HTML ê 文件,是予 <html> 和 </html>包--咧。
3. HTML 文件 ê meta (台羅: mé-thà) 佮戲文( script) 宣告是佇 <head></head>
4. HTML 文件看會著ê部分是佇 <body>佮 </body>籤中方。
5. 標題是佇uì <h1> 到<h1>標籤。
6. 段落是用 <p>標籤.

閣有一寡有路用的標籤,像 <a> 來表示超連結(hyperlinks),<table> 來標示表格<tr> 來表示橫逝(Row),<td> 來表示直逝(Column)。

HTML 標籤不時有用著id(ái-ti) 抑class(ku-lé-sū)ê 性質(attributes)。id 性質指定一咧唯一 ê (Value),這个踮規个 HTML 文件裡愛是獨一無二。class 性質用來共一寡定定用的 HTML 標籤組合,合起來準做一咧 class,後擺若使用這咧 class,就是仝款 ê 效果。咱會當利用 id 和 class 來搜揣欲挃 ê 乜件。

若欲了解較濟 HTML 標籤,id,和 class,會用(ē-i̋ng) 參考 W3Schools Tutorials

鑢網愛守 ê 規則

1 欲鑢進前,先檢查網站 ê 使用條文和條件 (Terms and Conditions)。特別愛注意和使用資料有關係ê法律條文。普通是袂用佇商業使用。
2 你 ê 程式莫霸霸佇咧資料,按呢有可能共網站害--去。予你 ê 程式較有禮貌咧,親像咱人類上網彼囉款,差不多一秒鐘一咧網頁較好。
3 網頁 ê 佈置 (Layout) 定定變,有時你嘛愛用遊覽器去彼咧網站確認,修改你 ê code。


分析網頁

咱用 Bloomberg Quote 中(tiőng) ê 一頁來做例。
有一咧做股票ê人,想欲 uì 這咧網頁來出股票名抑是代碼(Index name),佮伊的價數。首先咱開一咧遊覽器(我ê是 Google Chrome),先共鳥鼠徙去股價頂仔,揤鳥鼠 ê 正鈕,揀 "檢查" :


咱就會當看著全頁變按呢:



咱共正手爿,頂仔 ê 所在共伊放大來看:


咱會當看著股價是囥佇幾落棧 ê HTML 標籤tiőng,就是 <div class="basic-quote"> → <div class="price-container up"> → <div class="price">

利用 HTML tag,這馬咱了解價數是囥佇這咧網頁 ê 佗位。
仝款 ê 道理,咱會當揣其他 ê 物件,親像 S&P 500 Index,恁會使家己試看mài。

行入 Code 裡

咱知影欲挃 ê 資料佇佗,會用咧開始寫咱的鑢網程式。這馬拍開你 ê 編輯器 (Editor)。

咱先用 import 來引入欲使用著 ê 程式庫:
# import libraries
import urllib2
from bs4 import BeautifulSoup


紲--落來,宣告一咧變數,囥網頁 ê URL(台羅: iú-a-e-lo),也就是咱連鞭欲去掠資料 ê 網頁:
# specify the url
quote_page = 'http://www.bloomberg.com/quote/SPX:IND'

利用 urllib2,去共彼咧網頁捎--轉來:
# query the website and return the html to the variable ‘page’
page = urllib2.urlopen(quote_page)

落尾,用 BeautifulSoup 來伊滾滾ê,做好啉 ê 湯,就是網頁成做 BeautifulSoup ê 樣(format):
# parse the html using beautiful soap and store in variable `soup`
soup = BeautifulSoup(page, ‘html.parser’)

這馬,湯/soup內底就是規个 HTML ê 料,咱欲開始去股價--出來。
閣會記得彼 HTML 標籤有幾落--無? BeautifulSoup 有一咧 find() 來kā咱鬥相共。佇咱這咧例--,HTML class name 是唯一ê,先kā伊揣--出來:
# Take out the 
of name and get its value name_box = soup.find(‘h1’, attrs={‘class’: ‘name’})

著這咧標籤,咱會使用伊的 text 來提伊的資料:
name = name_box.text.strip() # strip() is used to remove starting and trailing
print name

和頂仔相siâng,股價嘛會著:
# get the index price
price_box = soup.find(‘div’, attrs={‘class’:’price’})
price = price_box.text
print price


這馬你會使共頂--仔殕色裡的 code, 都入去編輯器內,予好,嘛會使 uì 附件連結,是我試過會振動 ê 戲文。你--落來(Download)佇電腦,用 python web-scrape.py 來運行。

web-scrape.py

佇下一篇,我欲這篇小khua改一咧,先欲共伊uì Python 2 改做 Python3




2017年8月10日 星期四

Ubuntu 17.04 安裝心得

今仔日有機會 uì 頭安裝 Ubuntu 17.04,伊的外號是 Zesty Zapus, 意思是 興奮(hing-hùn) ê 林跳鼠(lîm-thiàu-tshú)。我是先去 ubuntu 的本站伊的 iso 檔轉--來,燒做 DVD,才閣用 DVD 來安裝。

DVD 安裝無問題。毋過,一開機就問題liâu-liâu。

ifconfig 命令無--去阿

ifconfig 是基本ê命令。伊是用來看網路卡 ê 狀況。毋過無--去阿。原來,新的 Debian/Ubuntu 版本,無建議閣用 ifconfig,改用 ip 這咧命令:

root@labrix1:/home/broadcom# ip address
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
valid_lft forever preferred_lft forever
inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host
2: enp3s0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
valid_lft forever preferred_lft forever
link/ether fc:aa:14:a0:14:1b brd ff:ff:ff:ff:ff:ff
inet 192.168.101.110/24 brd 192.168.101.255 scope global enp3s0
valid_lft forever preferred_lft forever
valid_lft forever preferred_lft forever
inet6 fe80::feaa:14ff:fea0:141b/64 scope link
3: wlp2s0: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 52:3c:06:76:c4:c6 brd ff:ff:ff:ff:ff:ff

ip address 會使簡單寫做: ip a 
當然,你若是數念 ifconfig,無 ifconfig 袂用得,嘛是會 i̋ng 共伊用 apt install net-tools --轉來。

DNS 袂振袂動

DNS (台羅:tí-on-es,英文:Domain Name System) 是一種 IP 地址(IP address) 佮域名(台羅:hi̍k-miâ,英文:Domain Name) 會使對準的技術。若是無對予準,你拍 IP address,親像 ping 168.95.1.1 會通,毋過拍 ping www.google.com 袂通。這咧過程,號做 DNS 解破器 (DNS Resolver)
凊彩 Google (kú-kò) 一咧,這是這版 17.04 的大問題。其實,踮 17.04 嘛是換新个 DNS 解破機制,才會問題遐呢濟!

參考這篇: Ubuntu 17.04 無法度解破有 DNSSEC 支援 ê DNS 侍候器(Server)。

sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf
頂面 ê 兩,就是叫 Ubuntu 17.04,咱的 DNS 解破器莫去解破 DNSSEC。你會當伊 Copy 了直接去 Terminal 裡運行,結果是:

cat /etc/systemd/resolved.conf.d/no-dnssec.conf
[Resolve]
DNSSEC=no
你愛看有 /etc/systemd/resolved.conf.d/no-dnssec.conf 這咧檔案,和伊的內容。
--落來,咱重開 DNS 解破器:

sudo dpkg-reconfigure resolvconf
按呢,伊就正常囉!


若是閣無法度

就共 systemd 个 dns 禁khiah, 直接用 Google 个 DNS 侍候器:
sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop
vi /etc/resolv.conf
添一逝:
nameserver 8.8.8.8

2017年8月2日 星期三

Python ê 基礎 - 函式



基本

函數/函式/hâm-sit (function) 是一種起做 Python 裡蓋重要 ê 乜件。伊和  while 圈圈 (while loop) 和 for 圈圈 (for loop) 相sia̋ng,都是重複利用寫過 ê code。毋過,while 佮 for 攏是連紲運行,一直到條件判段式成做 False,抑是 List 用佮貼底,才會得通做捌項代誌。你若是佇咧無仝所在欲使用,就無法度囉。

函式就是共一段 code,一咧名,不管時想欲使用,就叫伊的名。按呢生你就有真大 ê 自由度來使用伊。咱來看:

def fahrenheit(T_in_celsius):
    """ returns the temperature in degrees Fahrenheit """
    return (T_in_celsius * 9 / 5) + 32

c1 = fahrenheit(13)

c2 = fahrenheit(27.3) + 5

for t in (22.6, 25.8, 27.3, 29.8):
  print(t, ": ", fahrenheit(t))

函式咱愛先伊定義: 用關鍵字 def 𤆬頭一个人一看就知意思 ê 名,閣紲落去用月眉號 ()來參數包--起來,落尾才綴一咧大句點 : 完成宣告。函式的體 (body),就攏愛向正爿勼,來函式想欲做 ê 代誌寫好。

佇頂仔 ê 例,函式名號做 fahrenheit, 這是溫度 ê 單位 Hua-sit (華語:華式,Fahrenheit)。伊的參數是 T_in_celsius ,咱一看名就知這是另一 ê 溫度 ê 單位 Se-sit (華語:攝式,Celsius)。咱一看就知影,伊是共 Se-sit 轉做 Hua-sit ê 函式。內底 """ 是註解: 彼是予人看ê,電腦無佇看彼。咱先莫伊。

會當看著,fahrenheit 會使佇任何所在:會當數字型態 ê 所在,就會當囥伊。因為伊會擲出來的值,嘛是數字型態。這予咱真大ê自由,程式嘛加真屧貼,媠氣。

程式 ê 參數,無限定偌濟。若有濟 ê 參數,愛用逗點(華語:逗號,,)共 in 分開,像 func(para1, para2, para3)。若是完全無參數,就莫寫,像按呢 func()。


無定著愛寫的參數(Optional Parameters)

咱嘛會用得予函式參數一咧預設值(ū-siat-ta̍t),按呢生,咱就會使共捷捷用的值,成做預設值,看下跤 ê 例?

def Hello(name="everybody"):
    """ Greets a person """
    print("Hello " + name + "!")

Hello("Peter")
Hello()

name="everybody" ,name是參數,"everybody" 是預設值。咱若知人名,就添入參數位,若無,放予空空,伊就用 "everybody" 共伊印--出來。

毋過,有時咱有幾落 ê  無定著愛寫的參數,拄好上尾彼咧愛寫:

def sum(start=1, end=10):
    c = start
    s = 0
    while (c < end):
        s = s + c
        c = c + 1
    return s
伊是會使對 start 開始,疊加到 end 進前一咧整數。sum(2, 11)  就是 1 + 2 + 3 + ... + 10,答案是 54。咱若想欲對 1 開始加,start 會使免寫,毋過 sum(11),sum 毋知 11 是 start 抑是 end,所以咱愛共伊講:

sum(end=11)
伊就知 start 用預設值,答案是 55,這號做 關鍵字參數 (keyword parameters)


說明字串

咱看著函式裡頭一逝是字串。毋過,伊孤一ê佇遐,無囥入去參數,無啥乜作用。咱會使共伊當做註解。伊的目的是欲予人知影這个函式的作用,佮有啥乜愛注意。佇每一咧函式前阿寫註解,是一咧真好的習慣。
咱嘛會使共這个說明字串印出來:

def Hello(name="everybody"):
    """ Greets a person """
    print("Hello " + name + "!")

print("The docstring of the function Hello: " + Hello.__doc__)

伊會印:
The docstring of the function Hello:  Greets a person 

擲轉來濟濟的值

函式擲轉來值,普通是一咧。咱嘛會使一擺等幾落ê。

def arithmetic(a,b):
    """ It give the result of four basic arithmetic operation """
    return a+b, a-b, a*b, a/b

all_4 = arithmetic(100, 33)
add, sub, mul, div = arithmetic(100, 33)

print(all_4)
print(add, sub, mul, div)
print(all_4[0], all_4[1], all_4[2], all_4[3])
運行ê結果:
(133, 67, 3300, 3.0303030303030303)
133 67 3300 3.0303030303030303
你若用一个變數起乘伊,伊就是一咧 Tha-poh (Tuple)。Tha-poh 是 Lists 的親情,嘛是一種資料型態,是一種有順序ê物件 (Sequential),嘛會使用索引(index) 來提伊的值。



這的文章的例,是對 Python3 Tutorial 提--來ê,若有興趣欲閣學閣較深咧,會使去看原文。



2017年7月19日 星期三

Python ê 基礎 -- 參數


參數(arguments) 是佇咧程式運行的時,順紲 phá-sù (pass) 程式使用的物件。伊的目的是欲予程式較有通伸勼。舉例來講,咱若寫程式來算檔案--裡有偌濟字,欲按怎寫較好用? 是伊寫予死佇程式--裡? 抑是另外用 input() 運行到一半才來請使用者回答? 這時,咱用參數上方便:

#!/usr/bin/python3
import sys
fn = sys.argv[1]
fh = open(fn)
all_lines = fh.readlines()
lines = 0
words = 0
for s in all_lines:
    lines = lines + 1
    words = words + len(s)
print("File %s has %d lines, %d words" % (fn, lines, words))

咱用 count-words.py 來共伊入去檔案,運行看覓咧:

$ python3 count-words.py 魔神仔.txt
File 魔神仔.txt has 36 lines, 1237 words


佇頂仔 ê 程式中央,咱先使用 import sys,來共 sys 這个 module --入來。因為咱欲使用伊來提著 arguments: sys.argv[1] 是踮程式名後頭一咧字,佇例--裡就是 "魔神仔.txt"。當然,我的電腦--裡有現成的 "魔神仔.txt" 檔案,伊就會共幾和幾字攏算好印--出來。

咱若欲換捌的檔案,毋免改程式,換參數就好,凊彩你改,比如: count-words.py my.txtcount-words.py yours.txt

咱轉來看 sys.argv[1]。1 佇遮代頭一咧參數。咱若有濟濟的參數咧? 就 2, 3, 4,.. 照順序排落去是 sys.argv[2],sys.argv[3],sys.argv[4],...。

sys.argv[0] 是程式伊家己,佇咱的例內底,是 "count-words,py"。

這寡參數,攏是以字串(Strings)的型態讀--入來 Python 个。讀--入來了後,你若是想欲共伊轉做个型態,愛家己轉,無 Python 會共你張講你寫毋著--去阿。比如講,你欲用數字,你會使用 int(),float() 來轉:

#!/usr/bin/python3
# Simple sum
import sys

a = float(sys.argv[1])
b = float(sys.argv[2])
c = a + b
print(c)

運行:

$ python3 sum.py 3 5.5
8.5


2017年7月10日 星期一

Python ê 基礎 -- Pu-lian理路運算

if-statement 抑是 while-statement 中央有講著,in 需要一咧判斷式來決定欲行抑無愛。這判斷式的計算結果,愛是 True/False 兩其中一。這種運算,號做 Pu-lian 理路 (Boolean Logic,華語:布林)。伊有專用的資料型態: Pu-lian 型態 (Boolean data type)。

Pu-lian 理路是數學的一咧必叉。數學伊的理論檢采真複雜。佇遮,咱先用程式的角度來看:佇啥物狀況,一咧算式會產生 True? 又閣是啥物狀況,會產生 False?

比較運算元(Comparison Operators)

首先,是比較運算元(Comparison Operators),下跤是比較運算元的表:


運算元意思
==
!=無仝
<較細
>較大
<=較細抑是
>=較大抑是
咱來寫一咧程式:

#!/bin/bash

x = 5
y = 8

print("x == y:", x == y)
print("x != y:", x != y)
print("x < y:", x < y)
print("x > y:", x > y)
print("x <= y:", x <= y)
print("x >= y:", x >= y)
運行輸出:
$ python3 boolean.py x == y: False x != y: True x < y: True x > y: False x <= y: True x >= y: False
uì數字來算,簡單比較 in 事實上是相仝/大/細,和運算元的表示有仝款無? 若有就是 True, 無就是 False。像 x = 5 事實上比 y = 8 較細。所以 ==, >, >= 攏毋著,是 False。!=, <, <= 有合,都是 True。

阿若字串咧? 字串的相仝,就是兩的字串愛一模一樣,連大寫,小寫攏愛仝款。A 和 a 是無仝--ê。有一字無對同(tâng),就是無仝。字串會使比大細? 會用--逐个字母攏有伊的 ASCII ,字串就是一字一字,uì 頭到尾比伊的 ASCII 的大細:



>>> x='abcz' >>> y='abdy' >>> x > y False >>> x < y True >>>
x 佮 y,比到第三的,c 的 ASCII code 比 d 細,所以 x 就是比 y 細,後壁的免閣比矣。
好佳哉,a-z 是按照順序若來若大,A-Z 嘛是。毋過,a-z 是比 A-Z 較大。

當然,變數若是著 True/False,這个變數的型態就自動轉做 Boolean 型態。伊嘛是會使比大細: True 比 False 較大。
>>> x = True >>> y = False >>> x > y True >>> x < y False

理路運算元(Logical Operators)

理路運算元是針對 True/False 的運算。伊本底是對數學的原理來--ê。毋過佇 Python,咱干焦了解三的基本的運算元好:

運算元意思生做啥款
and若兩的攏真,伊就是真x and y
or凊彩一个真,伊就是真x or y
not倒反,真成做假, 假个變真not x
舉例來講,and 有四種狀況:

True and True   ==> True
True and False  ==> False
False and True  ==> False
False and False ==> False

干焦 x 和 y 攏是 "真", 伊的結果才是 "真"。仝款, or 是:

True or True   ==> True
True or False  ==> True
False or True  ==> True
False or False ==> False

not 只有兩款:

not True  ==> False
not False ==> True

就是顛倒的意思,烏个變白,白个變烏。

阿,這有啥乜路用咧? 看這定義,真無聊。毋過,你佮伊做伙,就真好用。咱用進前

#!/usr/bin/python3
i = 0
while i < 5:
    x = int(input("input an integer:"))

    if x % 2 == 0:
        continue
    if x % 3 == 0:
        continue

    print("This is NOT multiple of 2 or 3")
    i = i + 1

咱小共伊看一咧: x % 2 == 0 和 x %3 == 0 的 '==',攏是 Pu-lian 運算,若是 True,後壁就--過,if-statement 內仝款是 continue。若按呢,敢會使共伊合--起來? 這兩的 if 的關係,是 or 的關係。所以,咱會使改做:

#!/usr/bin/python3
i = 0
while i < 5:
    x = int(input("input an integer:"))

    if x % 2 == 0 or x % 3 == 0:
        continue

    print("This is NOT multiple of 2 or 3")
    i = i + 1

按呢咱的程式,是毋是閣較屧貼咧。用 and, or, not 共你需要的條件,--起來,像 x > 100 and x < 1000 來揣出 100 到 1000 中央的數字,你就會使閣較幼路,來予你的程式照你 ê 向望來


這篇文章的一寡例,是參考網路頂一篇: "Understanding Boolean Logic in Python3",逐个若有興趣,會使去遐踅踅咧!

2017年7月4日 星期二

Python ê 基礎 -- for loop

除了 while 圈圈 (while loop),有另外一種 loop, 號做 for 圈圈(for loop)。伊嘛是會使佇仝一段 code 重覆行。毋過,伊有較媠氣的用法佮寫法,是 while loop 比--

for-statements 的用法,上基本是: 佇名單(Lists) 內巡田水,一个一个點名:


>>> animals = ['cat', 'parrot', 'dog']
>>> for w in animals:
...     print(w)
...
cat
parrot
dog


animals 是一个 List, for loop 逐擺 uì animals 中央(tiőng) 一个出來,佇 w 變數--裡,才入去 for-statement 內底共伊印--出來。

這馬,你想欲印數字 1 到 100,你欲uì 1 開始,用手指頭仔建立一--咧 [ 1, 2, ..., 100] 的 List? 這个時陣,range() 這的函數就好用阿:

#!/usr/bin/python3
for i in range(1,101):
    print(i)

range(1, 101) 會自動產生一咧 1 到 100 的整數名單。愛注意: 101 無佇名單--裡。

range() 和 for --起來,就成做好用的工具。比如講,你想干焦雙數,你會使用

#!/usr/bin/python3
for i in range(2, 101, 2):
    print(i)

伊就會印出 2 到 100 的雙數。

若是 range(1, 101, 3),就是 1, 4, 7,..,100。
若是 range(0, 101, 5),就是 0, 5, 10,.., 100。

簡單講,range(start, end, diff) 就是產生數學講个 "算數(sǹg-siàu)數列(sòo-lia̍t)" (華語: 等差級數, 英文:Arithmetic progression)。

若是干焦 range(100),伊會自動起頭設做 0,產生 0 到 99 的整數名單。

若講較頂真个,毋是干焦 Lists,所有 "有順序的型態" (Sequence Type),攏會使囥佇 for loop。Lists 本身嘛是一種 Sequence Type。後擺你會學著閣較濟 Sequence Type 的資料型態。現此時咱除了 Lists, 就干焦知影字串(Strings) 嘛是一款 Sequence Type:

sammy = 'Parrot is the boss of cats'

for letter in sammy:
   print(letter)

你會看著字母,一字一字印--出來。


while loop 和 for loop,理論上會當完全互相取代。所以,while 會使用的 break 來跳出箍輾,用 continue 來躘過紲--落來的 code,直接跳轉去 while 起頭,for loop 嘛仝款會使用 break,continue

毋過,佇和像 List 這種 "有順序的型態" (Sequence Type) 的物件鬥陣使用時,你會當感受著 for loop 加真屧貼

佇 Linux 來看GPX 檔案

最近定定有戶外活動。使用𤆬路機 (GPS) 來記錄行過的路線。普通我記錄路線,攏是用手機仔抑是專門个𤆬路機,罕得用電腦來看。 毋過,"仙人拍鼓有時錯,跤步踏差啥人無"。有一擺我無細膩,袂記得共一擺活動的路線收煞起來,閣直接開始記錄下一擺的活動,按呢共幾落...