You are on page 1of 59

PYTHON 101

Phần 1: Python là gì?


(Và nguồn gốc của nó)
Phần 1: Python là gì?
- Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm 1990.
Phần 1: Python là gì?
- Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm 1990.

- Python được phát triển trong một dự án mã nguồn mở, do tổ chức phi lợi nhuận
Python Software Foundation quản lý

- Python được xếp hạng là ngôn ngữ lập trình phổ biến nhất năm 2017 (xếp hạng bởi
diễn đàn IEEE Spectrum)
Tôn chỉ, triết lý của Python là:

“Beautiful is better than ugly.


Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated. “
Phần 1: Python là gì?
“Hello World” in:
C++:
Java:
Python:
print(‘Hello World’)
public class
#include <iostream>
HelloWorld
{using namespace std;
public static void main(String[] args)
int{main()
{ System.out.println("Hello, World");
} cout << "Hello, World!";
}
return 0;
}
Phần 1: Python là gì?
Lập trình Python:

QuaQua IDE
Console
Phần 2: Biến, biểu thức, toán tử
(Cộng trừ nhân chia cùng Python)
Phần 2: Biến, biểu thức, toán tử
Biến:
- Các quy tắc đặt tên biến của Python giống với các ngôn ngữ lập
trình khác.
- Kiểu dữ liệu của một biến sẽ được nhận diện khi khởi tạo, nên
ta không cần phải khai báo kiểu dữ liệu cho biến.

Ví dụ:
>>>n=3
>>>x=0.54
>>>pi=3.1415
>>>hi=‘Hello’
Phần 2: Biến, biểu thức, toán tử
Toán tử:
- Các toán tử cơ bản(+ - * /) hoàn toàn giống như C hay các ngôn ngữ lập trình
bậc cao khác. Ta có thêm một vài sự thay đổi ở các toán tử như toán tử lũy
thừa: **
Ví dụ:
>>>a=3
>>>b=0.54
>>>c=a+b
>>>print(a+b)
3.54
Phần 2: Biến, biểu thức, toán tử
Toán tử:
- Python cung cấp thêm một số khả năng mới để thao tác dễ dàng hơn trên
chuỗi, ví dụ như cộng hai chuỗi hay nhân chuỗi.

>>>hi=‘Hello’
>>>you=‘ Em’
>>>print(hi+you)
Hello Em
>>>print(2*hi)
HelloHello
Phần 2: Biến, biểu thức, toán tử
Mệnh đề, điều kiện:
- Cấu trúc điều kiện trong Python tương tự như trong C.
if <điều_kiện>:
<lệnh thực hiện> #Viết thụt vào so với dòng trên
Ví dụ:
>>>x=10
>>>if x>0:
print(‘x duong’)
else:
print(‘x am’)
x duong
Phần 2: Biến, biểu thức, toán tử
Nhập, xuất cơ bản:
- Cấu trúc nhập vào một biến trong Python
<Tên biến>= input(‘<Nội dung hướng dẫn nhập, nếu có>’)

- Cấu trúc xuất:


print(<Nội dung hoặc biến cần in ra màn hình>)

Ví dụ:
>>>x=input(‘Nhap vao gia tri de in ra man hinh\n’)
10
>>>print(x)
10
Phần 3: Hàm
(Python không chỉ là một bộ console)
Phần 3: Hàm
Các hàm có sẵn:
- Như rất nhiều các ngôn ngữ lập trình khác, Python cung cấp các thư viện chứa
các hàm có sẵn cần thiết để cho người dùng sử dụng. Ví dụ như các hàm toán
học của thư viện math.

Ví dụ:
>>>import math #Khai báo thư viện
>>>radian=math.pi*1/2
>>>print(math.sin(pi))
1.0
>>>ratio=100
>>>print(math.log10(ratio))
3.0
Phần 3: Hàm
Các hàm có sẵn:
- Đối với các hàm có kiểu trả về cụ thể, ta có thể sử dụng nó như một biến khi sử
dụng một hàm khác:

Ví dụ:
>>>import math
>>>ratio=1000
>>>print(math.exp(math.log10(ratio)))
# math.log10(ratio) được dùng như một số
20.085536923187668
Phần 3: Hàm
Hàm tự định nghĩa:
- Ngoài sử dụng các hàm đã có sẵn, ta cũng có thể tự định nghĩa hàm để sử dụng
cho riêng mình với từ khóa def

Cấu trúc: def <Tên hàm>:


<lệnh thực hiện> #Viết thụt vào so với dòng trên

Ví dụ:
>>>def AddString(S1,S2):
S=S1+S2
print(S) # nội dung của hàm phải thụt vào so với đoạn khai báo hàm
>>> a=‘Hello’
>>> b=‘ World’
>>> AddString(a,b)
Hello World
Phần 3: Hàm
Hàm đệ quy:
- Ta có thể sử dụng từ khóa return để tạo ra những hàm có thể giải quyết các bài
toán đệ quy.
Ví dụ: Bài toán nhập vào một số và tìm giai thừa của số đó

>>>x=int(input('Nhap vao so can tinh giai thua:\n'))


>>>def GiaiThua(n):
if n==1 or n==0:
return 1 #Khi n=1 hoặc n=0 thì trả về 1
else:
return n*GiaiThua(n-1) # Khác trả về giai thừa của n-1
>>>print('Giai thua la:')
>>>print(GiaiThua(x))
Phần 4: Vòng lặp
(Không lẽ chỉ làm một lần rồi thôi?)
Phần 4: Vòng lặp
Vòng lặp while:
- Như ở trong C hay các ngôn ngữ khác thì vòng lặp while trong Python cũng có
cấu trúc và cách sử dụng như sau:
while <điều_kiện>:
<lệnh thực hiện> #Viết thụt vào so với dòng trên
Ví dụ:
>>>n=3
>>>while n>0:
print(n)
n=n-1
3
2
1
Phần 4: Vòng lặp
Vòng lặp while:
- Lệnh break vốn dùng để thoát khỏi những vòng lặp. Ta có thể sử dụng thêm
lệnh break để có thể tạo ra những hàm phức tạp hơn

Ví dụ:
>>>while True:
line = input('> ')
if line =='done':
break
>>>print(line)

#vòng lặp trên sẽ không thoát ra chừng nào nhập vào ‘done’
#khi đó lệnh break sẽ được kích hoạt và thoát khỏi vòng lặp và in ra từ khóa ‘done’
Phần 5: Xâu
(Giống như mảng nhưng lại không giống mảng)
Phần 5: Xâu
Xâu là một khái chuỗi các ký tự mà ta có thể truy cập được vào
bằng toán tử []
Ví dụ:
>>>fruit=‘Apple’
>>>print(fruit[2])
p

Độ dài xâu có thể được lấy thông qua hàm len của Python
Ví dụ:
>>>fruit=‘Apple’
>>>len(fruit)
5
Phần 5: Xâu
Tương tự như các ngôn ngữ khác, xâu trong Python cũng được coi
giống như một mảng gồm nhiều ký tự. Vì thế ta có thể dễ dàng
duyệt xâu bằng lệnh for. Cấu trúc lệnh có một chút khác biệt.

Ví dụ:
>>>fruit=‘Apple’
>>>for x in fruit:
print(x)
A
p
p
l
e
Phần 5: Xâu
Ta cũng có thể cắt một xâu ra thành các lát cắt tùy vào mục đích
sử dụng

Ví dụ:
>>>truth=‘believe’
>>>print(fruit[2:5])
lie

#Ta có thể thấy ta đã cắt xâu trên thành một xâu mới ngắn hơn
#Lấy từ ký tự fruit[0] đến ký tự fruit[4], không lấy fruit[5]
Phần 5: Xâu
Xâu là một đối tượng KHÔNG THỂ bị thay đổi.

Ví dụ:
>>>fruit=‘Apple’
>>>fruit[0]=‘N’
TypeError: object does not support item assignment

#Ta có thể thấy Python không cho phép tác động đến ký tự trong xâu
#Ta chỉ có thể tạo ra một xâu mới dựa trên xâu cũ để thao tác
Ví dụ:
>>>fruit=‘Apple’
>>>fru=‘N’+fruit[1:5]
>>>print(fru)
Npple
Phần 5: Xâu
Kiểm tra sự xuất hiện của một ký tự hay một xâu con trong một
xâu, ta sử dụng từ khóa in với cú pháp:
<ký tự hoặc xâu cần kiểm tra> in <xâu lớn>
Ví dụ:
>>>word=‘hello’
>>>’a’ in word
FALSE
>>>’ell’ in word
TRUE
Phần 5: Xâu
So sánh các xâu trong Python cũng khá giống với các ngôn ngữ
khác. Python sẽ so sánh theo thứ tự từ điển.
Ví dụ:
>>>word=‘hello’
>>>if word < ‘hi there’:
print(‘Oops’)
else:
print(‘Ok’)
Ok
Phần 5: Xâu
Phương thức xâu là một bộ các hàm của Python cung cấp cho
chúng ta khi thao tác với các xâu một cách dễ dàng hơn mà không
cần phải xây dựng lại
Ví dụ: Hàm upper() cho phép ta tạo ra một xâu mới là xâu in hoa của xâu cũ
>>>word=‘hello’
>>>new_word=word.upper()
>>>print(new_word)
HELLO
Hàm find()cho phép ta tìm kiếm sự xuất hiện của một ký tự hay một xâu con
trong một xâu lớn.Hàm trả về vị trí của ký tự/xâu con đó trong xâu lớn.
>>>word=‘hello’
>>>word.find(‘e’)
1
>>>word.find(‘ll’)
2
Phần 6: Danh sách
(Giống như xâu nhưng lại không giống xâu)
Phần 6: Danh sách
Danh sách là một mảng gồm nhiều phần tử. Khác với xâu, các
phần tử trong danh sách có thể ở bất cứ kiểu dữ liệu nào.

Ví dụ:
>>>[10, 20, 30, 40]
>>>[‘apple', ‘orange', ‘berry']
Hay kể cả ở dạng kết hợp:
>>>['spam', 2.0, 5, [10, 20]]
#Một list thậm chí có thể chứa được list con
Phần 6: Danh sách
Thao tác với danh sách hầu như giống với khi ta thao tác trên xâu:
- Duyệt:
>>> numbers=[1,2,3,4]
>>> for x in numbers:
print(numbers[x])
1
2
3
4
Phần 6: Danh sách
Thao tác với danh sách hầu như giống với khi ta thao tác trên xâu:
- Lấy độ dài:
>>>numbers=[1,2,3,4]
>>> len(numbers)
4
Phần 6: Danh sách
Thao tác với danh sách hầu như giống với khi ta thao tác trên xâu:
- Cắt thành lát:
>>> numbers=[1,2,3,4]
>>> print(numbers[1:3])
[2,3]
- Kiểm tra sự có mặt:
>>> numbers=[1,2,3,4]
>>> 3 in numbers
True
Phần 6: Danh sách
Thao tác với danh sách hầu như giống với khi ta thao tác trên xâu:
- Toán tử trên mảng:
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a + b
>>> print(c)
[1, 2, 3, 4, 5, 6]
>>> print(a*2)
[1, 2, 3, 1, 2, 3]
Phần 6: Danh sách
Danh sách là một mảng gồm nhiều phần tử. Khác với xâu, các
phần tử trong danh sách có thể ở bất cứ kiểu dữ liệu nào.

Ví dụ:
>>>[10, 20, 30, 40]
>>>[‘apple', ‘orange', ‘berry']
Hay kể cả ở dạng kết hợp:
>>>['spam', 2.0, 5, [10, 20]]
#Một list thậm chí có thể chứa được list con
Phần 6: Danh sách
Phương thức danh sách là một bộ các hàm của Python cung cấp
cho chúng ta khi thao tác với các danh sách một cách dễ dàng hơn
mà không cần phải xây dựng lại
Ví dụ: Hàm append cho ta thêm một phần tử vào trong danh sách

>>> t = ['a', 'b', 'c']


>>> t.append('d')
>>> print(t)
['a', 'b', 'c', 'd']
Hàm pop hoặc remove cho ta xóa một phần tử khỏi danh sách
>>> t = ['a', 'b', 'c']
>>> x = t.pop(1)
>>> print(t)
['a', 'c']
>>> print(x)
b
Phần 6: Danh sách
Một xâu có thể được biến đổi thành một danh sách và ngược lại
một cách dễ dàng trong Python:
Ví dụ:
1) Biến một xâu thành danh sách gồm các ký tự:
>>> s = ‘apple'
>>> t = list(s)
>>> print(t)
[‘a', 'p', ‘p', ‘p‘,’e’]
2) Biến một xâu thành danh sách các từ:
>>> s = ‘turn up the volume'
>>> t = s.split()
>>> print(t)
[‘turn', ‘up', 'the', ‘volume']

3) Biến một danh sách các từ thành một xâu:


>>> t = [‘turn', ‘up', 'the', ‘volume']
>>> delimiter =' ‘
>>> delimiter.join(t)
‘turn up the volume'
Phần 7: Từ điển
(Mọi thứ bắt đầu rắc rối ở đây)
Phần 7: Từ điển
Từ điển là một đối tượng mới xuất hiện trong Python. Nó giống
như danh sách, nhưng thay vì các chỉ số phải là số nguyên thì các
chỉ số trong Từ điển có thể ở bất cứ dạng nào.
Ví dụ:
>>> eng2sp = dict() #Khởi tạo một từ điển mới
>>> eng2sp['one'] = 'uno’
>>> print(eng2sp)
{'one': 'uno'}

Trong ví dụ trên, ta có thể thấy được 2 thành phần chính của từ điển:
KHÓA và GIÁ TRỊ
Khóa là ‘one’ và giá trị là ‘uno’
Phần 7: Từ điển
Từ điển là một đối tượng mới xuất hiện trong Python. Nó giống
như danh sách, nhưng thay vì các chỉ số phải là số nguyên thì các
chỉ số trong Từ điển có thể ở bất cứ dạng nào.
Ví dụ:
>>> eng2sp = dict() #Khởi tạo một từ điển mới
>>> eng2sp['one'] = 'uno’
>>> print(eng2sp)
{'one': 'uno'}

- Một giá trị có thể xuất hiện ở nhiều khóa khác nhau
- Nhưng một khóa thì chỉ được phép mang 1 giá trị.
Phần 7: Từ điển
Lấy giá trị theo khóa: Vì mỗi khóa đều mang một giá trị xác định
nên ta có thể lấy ra được giá trị của mỗi khóa một cách dễ dàng.
Ví dụ:
>>> eng2sp = dict()
>>> eng2sp = {'one': 'uno', 'two': 'dos', 'three': 'tres'}
>>> print(eng2sp['two'])
'dos'
# Giá trị của khóa ‘two’ trong từ điển là ‘dos’
Phần 7: Từ điển
Duyệt từ điển: Vì từ điển mang bản chất của một danh sách nên
việc duyệt nó hoàn toàn giống với việc duyệt một danh sách.
Ví dụ:
>>> td=dict()
>>>td={'mot':'1','hai':'2','ba':'3'}
>>> for x in td: #Sử dụng biến đếm x để chạy vòng for
print(x,td[x])
mot 1
hai 2
ba 3
Phần 7: Từ điển
Tìm khóa theo giá trị: Ta cũng hoàn toàn có thể tìm kiếm tên khóa
chứa giá trị cần tìm bằng cách xây dựng một hàm tìm kiếm ngược.
Ví dụ:
>>>def reverse_lookup(d, v):
for k in d:
if d[k] == v:
return k
raise ValueError

#Hàm trên nhận 2 tham số là d – từ điển và v – giá trị cần tìm. Hàm trên sẽ sử dụng
biến chạy k để tìm kiếm trong từ điển cho đến khi tìm được giá trị trùng với giá trị
cần tìm, và trả về khóa chứa giá trị đó.
Phần 7: Từ điển
Sử dụng từ điển như một bộ đếm: Đây là một ứng dụng của từ
điển có thể được sử dụng trong việc thống kê một tập dữ liệu nào
đó.
Ví dụ: Ta có một xâu ký tự và muốn đếm số lần xuất hiện của mỗi ký tự
có trong xâu. Ta có nhiều giải pháp cho việc này:
- Tạo ra 26 biến cho 26 ký tự trong bảng chữ cái. Mỗi chữ cái xuất hiện
tương ứng với việc ta tăng biến đếm đó 1 đơn vị.
- Tương tự như trên nhưng ta tạo một danh sách gồm 26 phần tử
- Tạo một từ điển mới với các khóa là các chữ cái trong xâu. Cứ mỗi
lần gặp thì tăng giá trị của khóa lên 1, nếu chưa gặp lần nào thì thêm
khóa trên vào từ điển.
Phần 7: Từ điển
Sử dụng từ điển như một bộ đếm: Đây là một ứng dụng của từ
điển có thể được sử dụng trong việc thống kê một tập dữ liệu nào
đó.
Ví dụ: Ta có một xâu ký tự và muốn đếm số lần xuất hiện của mỗi ký tự
có trong xâu. Ta có nhiều giải pháp cho việc này.
>>>def histogram(s):
d = dict()
for c in s:
if c not in d:
d[c] = 1
else:
d[c] += 1
return d
>>> h = histogram('brontosaurus')
>>> print(h)
{'a': 1, 'b': 1, 'o': 2, 'n': 1, 's': 2, 'r': 2, 'u': 2, 't': 1}
Phần 7: Từ điển
Memo: Đây là một ứng dụng khác của từ điển trong việc tiết kiệm
thời gian thực hiện của các hàm đệ quy, nhờ vào việc xây dựng cơ
sở dữ liệu để ghi nhớ.
Ví dụ: Ta có bài toán Fibonacci:

- Như ta có thể nhận thấy, hàm


Fibonacci(1) và Fibonacci(0) được gọi
rất nhiều lần, và tốn rất nhiều thời
gian cho các lời gọi hàm

- Người ta đưa ra một giải pháp thay


thế đó là sử dụng Memo
Phần 7: Từ điển
Memo: Đây là một ứng dụng khác của từ điển trong việc tiết kiệm
thời gian thực hiện của các hàm đệ quy, nhờ vào việc xây dựng cơ
sở dữ liệu để ghi nhớ.
Ví dụ: Ta có bài toán Fibonacci:

- Thay vì đi gọi lại hàm, ta có thể lưu


các kết quả của các hàm đã thực hiện
vào trong một cơ sở dữ liệu, để mỗi
lần gọi hàm mới ta không cần phải
gọi làm hàm cũ,mà đã có sẵn kết quả
để chạy.
Phần 7: Từ điển
Memo: Đây là một ứng dụng khác của từ điển trong việc tiết kiệm
thời gian thực hiện của các hàm đệ quy, nhờ vào việc xây dựng cơ
sở dữ liệu để ghi nhớ.
Ví dụ: Ta có bài toán Fibonacci:
>>>known = {0:0, 1:1}
>>>def fibonacci(n):
if n in known:
return known[n]
res = fibonacci(n-1) + fibonacci(n-2)
known[n] = res
return res
#Ta sử dụng từ điển để lưu các kết quả đã thực hiện. Mỗi lần gọi lại hàm, ta kiểm
tra xem hàm mới gọi đã có kết quả lưu trong từ điển chưa
Phần 8: Tuple
(Mind blown)
Phần 8: Tuple
Tuple được định nghĩa là một dãy các giá trị, chúng có thể ở bất cứ
kiểu dữ liệu nào và được đánh số bằng các số tự nhiên (rất giống
với danh sách)
Ví dụ:
>>> t=tuple()
>>> t = ('a', 'b', 'c', 'd', 'e‘)
>>>print(t)
('a', 'b', 'c', 'd', 'e')

Vì nó có bản chất giống với List nên các phương thức và tính chất của list hầu hết
có thể sử dụng với Tuple. Tuy nhiên chỉ có một lưu ý khi ta sử dụng Tuple:
Phần 8: Tuple
Tuple là một đối tượng KHÔNG THỂ BỊ thay đổi!

Ví dụ:
>>> t=tuple()
>>> t = ('a', 'b', 'c', 'd', 'e‘)
>>>t[0]=‘A’
TypeError: object doesn't support item assignment
Vì vậy, ta không thể sửa đổi một tuple, nhưng ta có thể thay thế nó với
một tuple mới:
Ví dụ:
>>> t = ('A',) + t[1:]
>>> print(t)
('A', 'b', 'c', 'd', 'e')
Phần 8: Tuple
Ứng dụng đầu tiên của Tuple là đơn giản hóa quá trình gán biến
trong tính toán
Ví dụ: Ta cần phải thay đổi giá trị của 2 biến cho nhau
>>> temp=a
>>> a=b
>>>b=temp #Đây là cách chúng ta thường sử dụng

>>> a,b=b,a #Đây là cách ta sử dụng với Tuple

Hay ta cần phải lấy địa chỉ và tên miền của một email nào đó:
>>> addr = ‘abc@xyz.com'
>>> uname, domain = addr.split('@')
>>> print(uname)
abc
>>> print(domain)
xyz.com
Phần 8: Tuple
Trả về kiểu Tuple:
Ví dụ: Đối với hàm divmod, cái ta muốn nhận được là thương
số và số dư của phép chia. Vì vậy Python xây dựng cho ta kiểu
trả về của divmod là một tuple để khi ta nhận, ta nhận kết quả
của thương và dư cùng một lúc
>>>t=divmod(7,3)
>>> print(t)
(2,1) #Với 2 là thương và 1 là số dư
>>> thuong,sd=divmod(7,3)
>>>print(thuong)
2
>>>print(sd)
3
Phần 8: Tuple
Nhập kiểu Tuple: Để nhập vào kiểu tuple khi sử dụng hàm, ta sử
dụng toán tử * để thu thập tất cả các giá trị nhận được và tạo
thành một tuple từ tất cả các giác trị đó.

>>>def printall(*args):
print(args)
>>> printall(1, 2.0, '3')
(1, 2.0,'3')
Phần 8: Tuple
Danh sách và Tuple là hai đối tượng rất giống nhau, và khi kết hợp
thì chúng có thể tạo nên những hiệu quả đặc biệt.
Ví dụ: Chuyển từ danh sách sang Tuple
>>> s = 'abc'
>>> t = [0, 1, 2]
>>> for e in zip(s, t):
print(e)
('a', 0)
('b', 1)
('c', 2)
#Từ khóa zip được sử dụng để kết hợp các phần tử từ xâu s (vốn là một danh
sách) với danh sách t để tạo nên các bộ Tuple. Khi đó, zip(s,t) là một danh sách
gồm các Tuple
Phần 8: Tuple
Từ điển và Tuple cũng có một mối quan hệ đặc biệt, nhất là khi
chuyển đổi cho nhau.
Ví dụ: Chuyển từ Từ điển sang Tuple
>>> d = {'a':0, 'b':1, 'c':2} #Khởi tạo từ điển
>>> t = d.items() #Sử dụng phương thức item()
>>> print(t)
dict_items([('a', 0), ('c', 2), ('b', 1)]) #Ta thu được một list các tuple

#Chỉ với một phương thức item() ta có thể chuyển từ cặp quan hệ key-value sang
cặp quan hệ bình đẳng của Tuple.
Phần 8: Tuple
Từ điển và Tuple cũng có một mối quan hệ đặc biệt, nhất là khi
chuyển đổi cho nhau.
Ví dụ: Chuyển từ Tuple sang Từ điển
>>> t = [('a', 0), ('c', 2), ('b', 1)]
>>> d = dict(t)
>>> print(d)
{'a': 0, 'c': 2, 'b': 1}

#Tương tự như phần trước, chỉ với một cú pháp, ta đã có thể từ một list các Tuple
tạo thành một từ điển

#2 đối tượng này có thể chuyển qua lại lẫn nhau một cách dễ dàng tùy theo mục
đích sử dụng, điều này tạo nên sự độc đáo trong xử lý dữ liệu của Python.
The End!
Thanks for your listening!!!!

You might also like