三十天學 Python

在 Python 臉書看到一篇免費的 30 天教學課程,立刻就去註冊了 ~ 因此先在這裡開一篇,如果之後有繼續學習的話,就在這邊更新



課程資源

主要資源

QA

清除視窗

1
2
3
# on windows
import os;
os.system("cls");

準備要看 Day 3: loop


Day 2: List, Dictionaries & Tuples 1107

List

一種資料型態,也是一種儲存資料的結構。用 ListName[i] 的方式可以存取位置在 i 的資料。ListName.pop(i) 可以擠出位置在 i 的資料(預設參數是最後一個)、而 ListName.append("data content") 可以將資料塞到最後一個位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

# 在 list 新增一個資料
>>> list_var = ["some string", 123, "another string"]
>>> list_var.append("some otehr item")
>>> list_var
['some string', 123, 'another string', 'some otehr item']


# 讓 list 最後一個資料跳出
>>> list_var.pop()
'some otehr item'
>>> list_var
['some string', 123, 'another string']


# 看長度(不曉得為什麼突然要看)
>>> len(list_var)
3
>>> len("an string")
9


# 抓取 list 某資料的方法
>>> list_var[0]
'some string'
>>> list_var[1]
123
>>> list_var[2]
'another string'


# 重新講一次 list 中位置的概念
>>> abc = [1, 2, 3]
>>> abc[0]
1
>>> abc[1]
2
>>> abc[2]
3


# 可以抓取 list 中的某資料,並宣告為 var 的內容
>>> another_list = ["Justin", "John", "Matt"]
>>> another_list
['Justin', 'John', 'Matt']
>>> matt_name = anotehr_list[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'anotehr_list' is not defined
>>> matt_name = another_list[2]
>>> matt_name
'Matt'


# 用 pop 來理解 list
>>> the_list = [1,2,3]
>>> the_list.pop(0)
1
>>> the_list
[2, 3]
>>> the_list.pop(0)
2
>>> the_list.pop(0)
3
>>> the_list.pop(0) # 沒資料了,所以 error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop from empty list
>>> the_list = [1,2,3]
>>> the_list.pop(2)
3
>>> the_list.pop(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop index out of range
>>> the_list
[1, 2]
>>> the_list[1000]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> len(the_list)
2

Dictionaries

也是一種資料結構。由 DictName = { "key": "value"} 所組成。使用 DictName["key"] 可以取用該 key 的 value。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

# 建立 dict
>>> a_dict = {}
>>> {
... "abc":"A string"
... }
{'abc': 'A string'}


# 建立 dict
>>> {
... "abc":"A string",
... "anothter": "another string",
... "yetanother": "anotehr string"
... }
{'anothter': 'another string', 'yetanother': 'anotehr string', 'abc': 'A string'}


# 為某個 key 設定 value
>>> a_dict["abc"] = "another"
>>> a_dict
{'abc': 'another'}


# 新的 dict 例子
>>> new_abc = {'anothter': 'another string', 'yetanother': 'anotehr string', 'abc': 'A string'}
>>> new_abc
{'anothter': 'another string', 'yetanother': 'anotehr string', 'abc': 'A string'}
>>> new_abc["abc"]
'A string'


# list 和 dict 的差異: dict 是用 key 在儲存資料,但數字也能當 key
>>> the_list = [1,2,3]
>>> the_list[1]
2
>>> new_abc[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 0
>>> new_abc[0] = "anotehr new item in the dict"
>>> new_abc[0]
'anotehr new item in the dict'


>>> new_abc
{0: 'anotehr new item in the dict', 'anothter': 'another string', 'yetanother': 'anotehr string', 'abc': 'A string'}

# dict 可以存放 list
>>> new_abc['list'] = the_list
>>> new_abc
{0: 'anotehr new item in the dict', 'anothter': 'another string', 'list': [1, 2, 3], 'yetanother': 'anotehr string', 'abc': 'A string'}

# dict 放 dict 會怪怪的
>>> new_abc['abc2'] = new_abc
>>> new_abc
{0: 'anotehr new item in the dict', 'list': [1, 2, 3], 'yetanother': 'anotehr string', 'abc2': {...}, 'anothter': 'another string', 'abc': 'A string'}
>>> new_abc["abc2"]
{0: 'anotehr new item in the dict', 'list': [1, 2, 3], 'yetanother': 'anotehr string', 'abc2': {...}, 'anothter': 'another string', 'abc': 'A string'}

Tuples

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 宣告一個 tuples
>>> tup = ()
>>> tup = ("abc", "abc")
>>> tup
('abc', 'abc')


# 重新宣告一次
>>> tup = (
... ("another", "another"),
... ("more", "more"),
... )
>>> tup
(('another', 'another'), ('more', 'more'))


# 取值
>>> tup[0]
('another', 'another')
>>> tup[0][0]
'another'


# 增加內容
>>> tup += ("yetAnother", 123)
>>> tup
(('another', 'another'), ('more', 'more'), 'yetAnother', 123)
>>> tup += (("yetAnother", 123),)
>>> tup
(('another', 'another'), ('more', 'more'), 'yetAnother', 123, ('yetAnother', 123))


# list 的類似作法(我覺得滿像 array 的
>>> the_list = []
>>> abc = ["another", "another"]
>>> the_list.append(abc)
>>> the_list
[['another', 'another']]

Day 1: Python Basics Strings 1107

Set up python

版本2版本3都可以

Strings

在 console 中,使用 "" 包住字,就能夠被辨識成 String。使用 ‘+’ 可以連接 String

1
'Some' + 'string'

Variable

變量要先 declare 才能被使用。例如

1
2
3
4
abc = "some string"
abc

>>> `some string`

Number

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 就是個數字
123
>>> 123

# 數字在字串中,就是字串
"123 is awesome"
>>> "123 is awesome"

# 數字能加減乘除
2 * 2
>>> 4

# 字串也可以加減乘除
"abc" * 2
>>> "abcabc"

課程說明

在 2016 年初,Python 超越 Java 成為世界上第一名初學者程式設計語言。為什麼? 這是因為它足夠簡單,適合那些還沒足夠進階成為專業人員的初學者。

  • SpaceX 使用它來發射火箭

  • Pixar 使用 Python 來運行他們的動畫軟體

  • Instagram 和 Pinterest 使用它來運行他們的 Web 應用程式(後端採用 Django)

來和我一起學習,我會告訴你如何使 Python 變成你的意志。本課程適合任何年齡與任何等級電腦知識的初學者來學習 Python。目標很簡單:通過逐步構建實際的專案來學習 Python,同時解釋每個概念。在接下來的 30 天,你將學習如何:

  • 任何網站(包括啟用 JavaScript 的網站)抓取資料
  • 為所有類型的自動化構建你自己的 Python 應用程式
  • 發送電子郵件和簡訊 (SMS) 給你的朋友或是你的客戶
  • 讀取和寫入 CSV 格式檔案 - 使用逗號分隔資料的格式,將你的資料以 CSV 格式儲存在本地端檔案並且可以使用熱門試算表軟體讀取,如 Microsoft Excel 和 Apple Numbers
  • 了解 Python 程式設計語言的基礎知識,以便準備好構建更進階的專案,例如 Web 應用程式