1 of 104

Tập huấn ngôn ngữ lập trình Python

Cập nhật chương trình GDPT 2018

Sở Giáo dục và Đào tạo An Giang

Từ 04/10/2022 đến 07/10/2022

2 of 104

Nội dung chính

  1. Giới thiệu tổng quan
  2. Cú pháp cơ bản
  3. Nhập xuất dữ liệu
  4. Cấu trúc điều khiển
  5. Kiểu dữ liệu danh sách
  6. Kiểu dữ liệu xâu
  7. Lập trình hàm

Tập huấn NNLT Python

2

3 of 104

I. Giới thiệu tổng quan

Tập huấn NNLT Python

3

4 of 104

I. Giới thiệu tổng quan

Tập huấn NNLT Python

4

This Photo by Unknown Author is licensed under CC BY-NC

5 of 104

I. Giới thiệu tổng quan

  • Là ngôn ngữ lập trình bậc cao được sử dụng nhiều nhất trên thế giới vì:
    • Đơn giản, dễ học, dễ nhớ
    • Cấu trúc gọn gàng, cho phép người dùng viết code với số lần gõ phím là ít nhất
    • Sử dụng cơ chế cấp phát vùng nhớ tự động và cho phép tạo kiểu động giúp việc lập trình trở nên dễ dàng và linh động hơn

Tập huấn NNLT Python

5

6 of 104

I. Giới thiệu tổng quan

  • Tác giả là Guido van Rossum, người Hà Lan.
  • Các phiên bản:
    • Python 1.0 được phát hành năm 1991.
    • Python 2.0 ra đời năm 2000.
    • Python 3.0 ra đời năm 2008 và liên tục phát triển cho đến hôm nay.
  • Trang web chính thức: python.org

Tập huấn NNLT Python

6

7 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Tải Python tại địa chỉ https://www.python.org/downloads
  • Chạy tập tin cài đặt, ta có giao diện như sau:

Tập huấn NNLT Python

7

8 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Chạy tập tin IDLE Python xxx (xxx là phiên bản của Python) để khởi động Python.

Tập huấn NNLT Python

8

9 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Các thao tác biên soạn trên Python:
    • Tạo tập tin Python mới: chọn File 🡪 New, hoặc nhấn Ctrl + N
    • Lưu file: chọn File 🡪 Save hoặc Ctrl + S. Tập tin Python có phần mở rộng là .py
    • Chạy chương trình: Run 🡪 Run Module hoặc nhấn F5

Tập huấn NNLT Python

9

10 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Các phần mềm soạn thảo lập trình Python khác một cách chuyên nghiệp hơn:
    • Wingware Personal
    • PyCharm
    • PyScripter
    • Thonny
    • ...

Tập huấn NNLT Python

10

11 of 104

I. Giới thiệu tổng quan (cài đặt)

  • PyCharm là môi trường phát triển tích hợp đa nền tảng (IDE) được phát triển bởi Jet Brains và được thiết kế đặc biệt cho Python.
  • PyCharm có mặt trên cả 3 nền tảng Windows, Linux và Mac OS.
  • Hiện tại PyCharm có 3 phiên bản:
    • Phiên bản Professional: đầy đủ tất cả các tính năng, hỗ trợ Python Web với HTML, JS, và SQL. Có thu phí
    • Phiên bản Community: hỗ trợ Python development. Miễn phí
    • Phiên bản Edu: dành cho giáo dục. Miễn phí

Tập huấn NNLT Python

11

12 of 104

I. Giới thiệu tổng quan (cài đặt)

Tập huấn NNLT Python

12

13 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Nháy đúp chuột vào tập tin vừa tải về để cài đặt PyCharm.

Tập huấn NNLT Python

13

Bấm vào nút Next

14 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Chọn đường dẫn để cài đặt PyCharm. Ta nên để mặc định. Chọn Next.

Tập huấn NNLT Python

14

Bấm vào nút Next

15 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Ta chọn như hình bên dưới. Chọn Next.

Tập huấn NNLT Python

15

Bấm vào nút Next

16 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Chọn nơi để tạo các Shortcut cho chương trình. Ta nên để mặc định.
  • Chọn Install.

Tập huấn NNLT Python

16

Bấm vào nút Install

17 of 104

I. Giới thiệu tổng quan (cài đặt)

  • Mở PyCharm, ta có giao diện như sau:

Tập huấn NNLT Python

17

Cửa sổ Python Shell

Khu vực xem và điểu khiển các file, project của Python

Cửa sổ soạn thảo lập trình

Nút Run (thực thi chương trình)

18 of 104

I. Giới thiệu tổng quan (cài đặt)

Các thao tác cơ bản trên PyCharm:

  • Tạo Project mới: File 🡪 New Project
  • Tạo file Python: File 🡪 New 🡪 Python File
  • Thực thi (chạy) chương trình:
    • Chạy chương trình trước đó: Run 🡪 Run ‘xxx’ (Shift + F10) (với xxx là tên tập tin Python chạy trước đó)
    • Lựa chọn chương trình chạy: Run 🡪 Run… 🡪 chọn chương trinh muốn chạy (Alt + Shift + F10)

Tập huấn NNLT Python

18

19 of 104

II. Cú pháp cơ bản

Tập huấn NNLT Python

19

20 of 104

II. Cú pháp cơ bản

  • Quy tắc đặt tên trong Python:
    • Phân biệt hoa thường.
    • Chỉ chứa ký tự là chữ, chữ số, dấu gạch dưới (underscore).
    • Phải bắt đầu bằng chữ cái hoặc dấu gạch dưới (underscore), không được phép bắt đầu bằng chữ số.
    • Không giới hạn độ dài của tên
    • Nên đặt tên sao cho gợi nhớ.
  • Ví dụ: Baitap, s, x1, so_luong, _R2, PI

Tập huấn NNLT Python

20

21 of 104

II. Cú pháp cơ bản

  • Các toán tử cơ bản:

Tập huấn NNLT Python

21

Toán tử

Ý nghĩa

+, -, *, /

Cộng, trừ, nhân, chia

//

Chia lấy phần nguyên

%

Chia lấy dư

**

Lũy thừa

22 of 104

II. Cú pháp cơ bản

  • Các phép toán trong Python:

Tập huấn NNLT Python

22

Toán tử

Ý nghĩa

and, or, not

Phép toán logic

<, <=, >, >=, ==, !=

Phép toán quan hệ

23 of 104

II. Cú pháp cơ bản

  • Chú thích trong Python:
    • Sử dụng dấu # để chú thích 1 dòng
    • Sử dụng cặp dấu ''' (3 dấu nháy đơn) để chú thích nhiều dòng

Tập huấn NNLT Python

23

24 of 104

II. Cú pháp cơ bản

  • Cấu trúc khối lệnh: sử dụng canh lề để bao các khối lệnh của hàm, lớp, hoặc luồng điều khiển. Số khoảng trắng dùng để canh lề có thể tùy chọn nhưng các lệnh trong cùng một khối phải được canh lề như nhau
  • Ví dụ:

Tập huấn NNLT Python

24

25 of 104

II. Cú pháp cơ bản

  • Dòng lệnh dài viết trên nhiều dòng: sử dụng ký tự \
  • Lệnh nằm trong các cặp dấu ngoặc [] {} () không cần sử dụng ký tự \ để tiếp tục dòng
  • Dấu ; để cách nhiều lệnh trên cùng 1 dòng
  • Ví dụ:

a = 10; b = 3

c = a + b + \

10 * a - b / 4 - \

5 + 3 * a

print(c)

Tập huấn NNLT Python

25

26 of 104

II. Cú pháp cơ bản

  • Khai báo thư viện: phải dùng lệnh import theo cú pháp:

import <tên thư viện>

  • Để sử dụng hàm trong thư viện đã được import:

<tên thư viện>.<tên hàm>

  • Ví dụ: Hàm sqrt() trong thư viện math là hàm tính căn bậc 2. Muốn sử dụng hàm này thực hiện như sau:

import math

x = math.sqrt(2)

Tập huấn NNLT Python

26

Cách khác:

from math import sqrt

x = sqrt(2)

27 of 104

II. Cú pháp cơ bản

  • Một số hàm toán học thường dùng:

Tập huấn NNLT Python

27

Hàm

Ý nghĩa

abs(x)

Tính |x|

ceil(x)

Trả về số nguyên nhỏ nhất, lớn hơn hoặc bằng giá trị x

round(x, y)

Làm tròn số x với y chữ số thập phân

gcd(x, y)

Tính ước chung lớn nhất của hai số nguyên x và y

sqrt(x)

Tính căn bậc 2 của x

log(x)

Tính lnx

exp(x)

Ngoài hàm abs, round là có thể sử dụng trực tiếp, các hàm còn lại cần phải khai báo thư viện math

28 of 104

III. Nhập xuất dữ liệu

  • Các kiểu dữ liệu cơ bản trong Python: kiểu số nguyên (int), kiểu số thực (float), kiểu logic (bool), kiểu xâu (str).
  • Biến trong Python không thuộc một kiểu cố định mà tùy vào giá trị khi gán.
  • Ví dụ:

a = 'Học Python' # biến a có kiểu xâu

a = 5 # biến a đổi sang kiểu số nguyên

a = 5.5 # biến a đổi sang kiểu số thực

a = True # biến a đổi sang kiểu logic

Tập huấn NNLT Python

28

29 of 104

III. Nhập xuất dữ liệu

  • Để xem kiểu dữ liệu của biến: type(<tên biến>)
  • Ví dụ:

a = 'Học Python'; print(type(a))

a = 5; print(type(a))

a = 5.5; print(type(a))

a = True; print(type(a))

Tập huấn NNLT Python

29

<class 'str'>

<class 'int'>

<class 'float'>

<class 'bool'>

30 of 104

III. Nhập xuất dữ liệu

  • Một số lưu ý:
    • Kiểu số nguyên không giới hạn giá trị, chỉ phụ thuộc vào bộ nhớ máy tính
    • Kiểu số thực có độ chính xác là 15 chữ số phần thập phân.
    • Kiểu xâu được đặt trong cặp dấu nháy đơn hoặc cặp dấu ngoặc kép hoặc cặp 3 dấu nháy đơn
    • Kiểu logic nhận một trong hai giá trị là True hoặc False.

Tập huấn NNLT Python

30

31 of 104

III. Nhập xuất dữ liệu

  • Xuất dữ liệu: print(<danh sách kết quả>)
  • Ví dụ:

print('*')

print('**')

print('***')

print('****')

print('*****’)

x = 'Chao mung ban den voi Python'

print(x)

Tập huấn NNLT Python

31

*

**

***

****

*****

Chao mung ban den voi Python

32 of 104

III. Nhập xuất dữ liệu

  • Chú ý:
    • Khi xuất dữ liệu với nhiều tham số, mỗi tham số cách nhau bởi dấu phẩy.
    • Ký tự xuống dòng là \n.
  • Ví dụ:

print('a','b','c')

print('x+y=',4+5)

print('*\n**\n***\n****\n*****')

Tập huấn NNLT Python

32

a b c

x+y= 9

*

**

***

****

*****

33 of 104

III. Nhập xuất dữ liệu

  • Tham số sep trong hàm print: quy định ký tự phân cách giữa các tham số (mặc định là dấu cách)
  • Cú pháp:

print(<danh sách các kết quả>, sep=[nội dung giữa các kết quả])

  • Ví dụ:

print('a','b','c',sep='')

print('a','b','c',sep='--')

print('a','b','c',sep=' ')

print('a','b','c',sep=',')

Tập huấn NNLT Python

33

abc

a--b--c

a b c

a,b,c

34 of 104

III. Nhập xuất dữ liệu

  • Tham số end trong hàm print: quy định quy cách sau khi hàm print thực hiện xong (mặc định là xuống dòng)
  • Cú pháp:

print(<danh sách các kết quả>, end=[nội dung cuối mỗi kết quả])

  • Ví dụ:

print('a',end=' ')

print('b',end='+')

print('c',end='\n')

print('Tu hoc')

print('Python')

Tập huấn NNLT Python

34

a b+c

Tu hoc

Python

35 of 104

III. Nhập xuất dữ liệu

  • Định dạng dữ liệu khi in ra màn hình:

Sử dụng hàm format(giá trị, "chuỗi định dạng")

  • Ví dụ:

a = 3.1415

print(format(a, ".1f"))

# Định dạng kiểu số thực với 1 số lẻ

Tập huấn NNLT Python

35

3.1

36 of 104

III. Nhập xuất dữ liệu

  • Nhập dữ liệu từ bàn phím vào một biến:

<tên biến> = input()

  • Ví dụ: Nhập một dãy ký tự từ bàn phím và in ra màn hình, ta viết chương trình như sau:

print('Moi nhap mot day ky tu:')

x=input()

print('Day ky tu duoc nhap la:',x)

Tập huấn NNLT Python

36

Moi nhap mot day ky tu:

Truong THPT chuyen Thoai Ngọc Hau

Day ky tu duoc nhap la: Truong THPT chuyen Thoai Ngọc Hau

37 of 104

III. Nhập xuất dữ liệu

  • Cách viết khác:

x=input('Moi nhap mot day ky tu:')

print('Day ky tu duoc nhap la:',x)

Tập huấn NNLT Python

37

Moi nhap mot day ky tu:Truong THPT chuyen Thoai Ngoc Hau

Day ky tu duoc nhap la: Truong THPT chuyen Thoai Ngoc Hau

38 of 104

III. Nhập xuất dữ liệu

  • Chú ý: Câu lệnh input trả về một xâu ký tự, vì vậy khi muốn trả về kiểu dữ liệu khác thì ta cần phải ép kiểu.
  • Ví dụ int(‘123’) sẽ chuyển kiểu xâu ký tự ‘123’ thành số nguyên 123.

a=int(input('Nhap so a:'))

b=int(input('Nhap so b:'))

print('Tong của a va b la:',a+b)

Tập huấn NNLT Python

38

Nhap so a:7

Nhap so b:9

Tong của a va b la: 16

39 of 104

III. Nhập xuất dữ liệu

  • Bài tập tính toán đơn giản:

Tập huấn NNLT Python

39

40 of 104

Cấu trúc điều khiển

Tập huấn NNLT Python

40

41 of 104

IV. Cấu trúc điều khiển

  • Python sử dụng cấu trúc canh lề để bao các khối lệnh của hàm, lớp hoặc luồng điều khiển.
  • Số khoảng trắng dùng để canh lề có thể tùy chọn nhưng các lệnh trong cùng một khối phải được canh lề như nhau
  • Một số cấu trúc điều khiển phổ biến trong Python là if, whilefor.

Tập huấn NNLT Python

41

42 of 104

IV. Cấu trúc điều khiển

  • Câu lệnh if dạng 1:

if <điều kiện>:

<khối lệnh>

  • Câu lệnh if dạng 2:

if <điều kiện>:

<khối lệnh 1>

else:

<khối lệnh 2>

Tập huấn NNLT Python

42

43 of 104

IV. Cấu trúc điều khiển

  • Cú pháp:

if <điều kiện 1>:

<khối lệnh 1>

else:

if <điều kiện 2>:

<khối lệnh 2>

else:

<khối lệnh 3>

  • Cú pháp:

if <điều kiện 1>:

if <điều kiện 2>:

<khối lệnh 1>

else:

<khối lệnh 2>

else:

<khối lệnh 3>

Tập huấn NNLT Python

43

Nếu có nhiều trường hợp, ta có thể sử dụng các câu lệnh if lồng vào nhau.

44 of 104

IV. Cấu trúc điều khiển

  • Ví dụ: Viết chương trình cho phép nhập và so sánh hai số nguyên a và b.

Tập huấn NNLT Python

44

a=int(input('Nhập số a:'))

b=int(input('Nhập số b:'))

if a != b:

if a > b:

print("a > b")

else:

print("a < b")

else:

print("a = b")

a=int(input('Nhập số a:'))

b=int(input('Nhập số b:'))

if a == b:

print("a = b")

else:

if a > b:

print("a > b")

else:

print("a < b");

45 of 104

IV. Cấu trúc điều khiển

Có thể thay if else if else … bằng if elifelse …:

Tập huấn NNLT Python

45

a=int(input('Nhập số a:'))

b=int(input('Nhập số b:'))

if a == b:

print("a = b")

elif a > b:

print("a > b")

else:

print("a < b");

a=int(input('Nhập số a:'))

b=int(input('Nhập số b:'))

if a == b:

print("a = b")

else:

if a > b:

print("a > b")

else:

print("a < b");

46 of 104

IV. Cấu trúc điều khiển

  • Bài tập vận dụng câu lệnh if:

Tập huấn NNLT Python

46

47 of 104

IV. Cấu trúc điều khiển

  • Hàm range:
    • Cú pháp: range(a, b, c)
    • Công dụng: tạo ra 1 dãy số từ a đến b – 1 với bước nhảy là c
    • Ví dụ:

range(100) 🡪 dãy từ 0 đến 99

range(2,10) 🡪 dãy liên tục từ 2 đến 9

range(2,10,2) 🡪 dãy các số 2, 4, 6, 8

range(100,0,-1) 🡪 dãy liên tục từ 100 đến 1

Tập huấn NNLT Python

47

48 of 104

IV. Cấu trúc điều khiển

  • Câu lệnh for:
    • Cú pháp:

for <tên biến> in [tập các giá trị]:

<khối lệnh>

    • Cách thức thực hiện: <tên biến> nhận lần lượt các giá trị trong [tập các giá trị], với mỗi lần nhận giá trị của biến sẽ là một lần thực hiện khối lệnh.
    • Ví dụ 1:

for x in 1, 2, 5:

print(x)

Tập huấn NNLT Python

48

1

2

5

49 of 104

IV. Cấu trúc điều khiển

  • Ví dụ 2:

for x in range(3):

print('x=',x)

Tập huấn NNLT Python

49

x= 0

x= 1

x= 2

50 of 104

IV. Cấu trúc điều khiển

  • Bài tập vận dụng câu lệnh for:

Tập huấn NNLT Python

50

51 of 104

IV. Cấu trúc điều khiển

Câu lệnh while:

while <điều kiện>:

<khối lệnh>

Sơ đồ khối

Tập huấn NNLT Python

51

52 of 104

III. Lặp với số lần lặp chưa biết trước - while

  • Ví dụ:

n = 2

while n<=5:

print(n)

n = n + 1

Tập huấn NNLT Python

52

2

3

4

5

🖎 Chú ý:

  • Lưu ý điều kiện dừng của vòng lặp, tránh trường hợp lặp vô hạn lần.

53 of 104

IV. Cấu trúc điều khiển

  • Câu lệnh continue :
    • Được viết trong khối lệnh của các vòng lặp
    • Khi thực hiện câu lệnh continue, các câu lệnh phía sau trong khối lệnh sẽ không được thực hiện mà sẽ quay lại lần lặp tiếp theo.
    • Ví dụ:

for x in 1, 2, 3, 4, 5:

if x%2==0:

continue

print('x =',x,'là số lẻ')

Tập huấn NNLT Python

53

x = 1 là số lẻ

x = 3 là số lẻ

x = 5 là số lẻ

54 of 104

IV. Cấu trúc điều khiển

  • Câu lệnh break:
    • Được viết trong khối lệnh của các vòng lặp
    • Khi thực hiện câu lệnh break, chương trình sẽ thoát khỏi vòng lặp trong cùng chứa nó.
    • Ví dụ:

for x in 1, 2, 3, 4, 5:

if x == 4:

break

print('x =',x)

Tập huấn NNLT Python

54

x = 1

x = 2

x = 3

55 of 104

IV. Cấu trúc điều khiển

  • Ví dụ:

for x in range(3):

for y in range(6):

if y == 3:

break

print('x, y:',x,y,sep=' ')

Tập huấn NNLT Python

55

x, y: 0 0

x, y: 0 1

x, y: 0 2

x, y: 1 0

x, y: 1 1

x, y: 1 2

x, y: 2 0

x, y: 2 1

x, y: 2 2

56 of 104

IV. Cấu trúc điều khiển

  • Bài tập vận dụng câu lệnh while:

Tập huấn NNLT Python

56

57 of 104

�V. Kiểu dữ liệu danh sách (list)

Tập huấn NNLT Python

57

58 of 104

V. Kiểu dữ liệu danh sách (list)

  • Danh sách là một tập hợp các phần tử.
  • Khai báo:

<biến danh sách> = [phần tử 0, phần tử 1, ..., phần tử n-1]

  • Ví dụ:

list1 = [] # khai báo danh sách rỗng

list2 = ['Toán','Lý','Hóa','Sinh','Tin'] # ds gồm 5 phần tử

list3 = [1, 2, 3, 4, 5,'Toán','Lý','Hóa'] # ds gồm 8 phần tử

  • Các phần tử được đánh chỉ số bắt đầu từ 0, 1, … (từ trái sang phải) và -1, -2, … (từ phải sang trái).
  • Truy cập phần tử của danh sách a với chỉ số k: a[k].

Tập huấn NNLT Python

58

59 of 104

V. Kiểu dữ liệu danh sách (list)

  • Ta có danh sách a = ['P','Y','T','H','O','N’]

Tập huấn NNLT Python

59

Phần tử:

P

Y

T

H

O

N

Chỉ số:

0

1

2

3

4

5

Chỉ số âm:

-6

-5

-4

-3

-2

-1

Kết quả:

Danh sách a: ['Toán', 'Lý', 'Hóa', 'Sinh', 'Tin']

a[0]: Toán

a[1]: Lý

a[-1]: Tin

a[-2]: Sinh

  • Ví dụ:

a = ['Toán','Lý','Hóa','Sinh','Tin'] # ds gồm 5 phần tử

print('Danh sách a:',a)

print('a[0]:',a[0])

print('a[1]:',a[1])

print('a[-1]:',a[-1])

print('a[-2]:',a[-2])

60 of 104

V. Kiểu dữ liệu danh sách (list)

  • Khởi tạo danh sách (cách 1):

list_a = []

for i in range(100):

list_a.append(i)

Tập huấn NNLT Python

60

61 of 104

V. Kiểu dữ liệu danh sách (list)

  • Khởi tạo danh sách (cách 2):

<danh sách> = [<biểu thức> for <phần tử> in <tập giá trị>]

  • Dùng để tạo một danh sách gồm các phần tử là giá trị của <biểu thức> khi <phần tử> lần lượt nhận giá trị của <tập giá trị>.
  • Ví dụ:

a = [i for i in range(6)]

b = [i*i for i in range(6)]

c = [0 for i in range(6)]

d = [2*i for i in (1, 2, 3)]

print(a)

print(b)

print(c)

print(d)

Tập huấn NNLT Python

61

[0, 1, 2, 3, 4, 5]

[0, 1, 4, 9, 16, 25]

[0, 0, 0, 0, 0, 0]

[2, 4, 6]

62 of 104

V. Kiểu dữ liệu danh sách (list)

  • Khởi tạo danh sách (cách 3):

<danh sách> = [<biểu thức> for <phần tử> in <tập giá trị> if <điều kiện>]

  • Dùng để tạo một danh sách gồm các phần tử là giá trị của <biểu thức> khi <phần tử> lần lượt nhận giá trị của <tập giá trị> thỏa <điều kiện>.
  • Ví dụ:

a = [i for i in range(6) if i%2==0]

b = [i*i for i in range(6) if i%2==0]

c = [0 for i in range(6) if i%2==0]

d = [2*i for i in (1, 2, 3) if i%2==0]

print(a)

print(b)

print(c)

print(d)

Tập huấn NNLT Python

62

[0, 2, 4]

[0, 4, 16]

[0, 0, 0]

[4]

63 of 104

V. Kiểu dữ liệu danh sách (list)

  • Hàm len() để tính độ dài (số lượng phần tử) của danh sách
  • Ví dụ:

a = ['Toán','Lý','Hóa','Sinh','Tin']

print(len(a))

b = []

print(len(b))

print(len(range(9)))

Tập huấn NNLT Python

63

5

0

9

64 of 104

V. Kiểu dữ liệu danh sách (list)

  • Hàm min(a): trả về phần tử nhỏ nhất trong danh sách a.
  • Hàm max(a): trả về phần tử lớn nhất trong danh sách a.
  • Ví dụ:

a = [1, 1, 2, 3, 5]

print('Giá trị nhỏ nhất:',min(a))

print('Giá trị lớn nhất:',max(a))

Tập huấn NNLT Python

64

Giá trị nhỏ nhất: 1

Giá trị lớn nhất: 5

65 of 104

V. Kiểu dữ liệu danh sách (list)

  • Hàm sum(a): trả về tổng các phần tử trong danh sách a.
  • Ví dụ:

a = [1, 2, 3, 4]

s = sum(a)

print('Tổng các phần tử:',s)

Tập huấn NNLT Python

65

Tổng các phần tử: 10

66 of 104

V. Kiểu dữ liệu danh sách (list)

  • Phép toán: x in a
  • Công dụng: trả về giá trị True nếu x thuộc danh sách a, ngược lại trả về giá trị False.
  • Ví dụ:

a = [1, 2, 3, 4]

x = 1

y = 5

if x in a:

print('x thuộc a')

if y in a:

print('y thuộc a')

else:

print('y không thuộc a')

Tập huấn NNLT Python

66

x thuộc a

y không thuộc a

67 of 104

V. Kiểu dữ liệu danh sách (list)

  • Một số phương thức trên danh sách:

Tập huấn NNLT Python

67

Phương thức

Ý nghĩa

a.append(x)

Bổ sung phần tử x vào cuối danh sách a

a.pop(i)

Xóa phần tử có chỉ số i trong danh sách a và đưa ra phần tử này

a.insert(i, x)

Bổ sung phần tử x vào trước phần tử có chỉ số i trong danh sách a

a.sort()

Sắp xếp các phần tử của danh sách a theo thứ tự không giảm

a.clear()

Xóa toàn bộ dữ liệu của danh sách a

a.remove(x)

Xóa phần tử x từ danh sách a

68 of 104

V. Kiểu dữ liệu danh sách (list)

  • Ghép các danh sách: dùng dấu +
  • Ví dụ:

a = [1, 2, 3, 4]

b = [2, 3, 4, 5]

c = a + b

print(c)

Tập huấn NNLT Python

68

[1, 2, 3, 4, 2, 3, 4, 5]

69 of 104

V. Kiểu dữ liệu danh sách (list)

  • Lặp danh sách: dùng dấu *
  • Ví dụ:

a = [1, 2, 3]

b = a*3

c = 3*a

print(b)

print(c)

Tập huấn NNLT Python

69

[1, 2, 3, 1, 2, 3, 1, 2, 3]

[1, 2, 3, 1, 2, 3, 1, 2, 3]

70 of 104

V. Kiểu dữ liệu danh sách (list)

  • Bài tập vận dụng câu lệnh kiểu danh sách:

Tập huấn NNLT Python

70

71 of 104

VI. Kiểu dữ liệu xâu (str)

Tập huấn NNLT Python

71

72 of 104

VI. Kiểu dữ liệu xâu (str)

  • Xâu là một dãy các ký tự được mã hóa theo kiểu Unicode.
  • Ta khai báo một xâu bằng cách đặt chúng trong ngoặc kép hoặc nháy đơn.
  • Nếu muốn hiển thị ký tự nháy đơn hoặc ngoặc kép thì ta dùng ký hiệu \ kèm theo, Python sẽ bỏ qua dấu nháy liền sau ký tự này.
  • Ví dụ:

a = 'How are you?'

b = "I\'m fine, thank you!"

print(a)

print(b)

Tập huấn NNLT Python

72

How are you?

I'm fine, thank you!

73 of 104

VI. Kiểu dữ liệu xâu (str)

  • Ký tự \n mang ý nghĩa là xuống dòng
  • Ký tự r sẽ bỏ qua các ký tự đặc biệt
  • Ví dụ:

print('C:\some\name')

print('\n')

print(r'C:\some\name')

Tập huấn NNLT Python

73

C:\some

ame

C:\some\name

74 of 104

VI. Kiểu dữ liệu xâu (str)

  • Xét xâu 'Tự học Python', cách đánh chỉ số của các ký tự như sau:

Tập huấn NNLT Python

74

 

T

 

h

c

 

P

y

t

h

o

n

Chỉ số

0

1

2

3

4

5

6

7

8

9

10

11

12

-13

-12

-11

-10

-9

-8

-7

-6

-5

-4

-3

-2

-1

75 of 104

VI. Kiểu dữ liệu xâu (str)

  • Ví dụ:

s1 = 'Tự học lập trình Python’

s2 = "Học, học nữa, học mãi"

s3 = 'Ngôn ngữ lập trình "Python"'

print(type(s1))

print(type(s2))

print(s1)

print(s2)

print(s3)

Tập huấn NNLT Python

75

<class 'str'>

<class 'str'>

Tự học lập trình Python

Học, học nữa, học mãi

Ngôn ngữ lập trình "Python"

76 of 104

VI. Kiểu dữ liệu xâu (str)

  • Để lấy độ dài của xâu: len(<biến xâu>)
  • Ví dụ:

s='abcd ef'

print('Xâu:',s)

print('Độ dài:',len(s))

Tập huấn NNLT Python

76

Xâu: abcd ef

Độ dài: 7

77 of 104

VI. Kiểu dữ liệu xâu (str)

  • Để truy cập từng ký tự trong xâu: <biến xâu>[chỉ số]
  • Ví dụ:

s = 'abc'

n = len(s)

print(s[0],'==',s[-n])

print(s[1],'==',s[-n+1])

print(s[2],'==',s[-n+2])

print('Tất cả các ký tự trong xâu:')

for i in range(n):

print(s[i])

Tập huấn NNLT Python

77

a == a

b == b

c == c

Tất cả các ký tự trong xâu:

a

b

c

78 of 104

VI. Kiểu dữ liệu xâu (str)

  • Ghép xâu: dùng dấu +

<xâu 1> + <xâu 2> + ... + <xâu n>

  • Ví dụ:

s1 = 'Tự học '

s2 = 'lập trình Python'

s = s1 + s2

print(s)

Tập huấn NNLT Python

78

Tự học lập trình Python

79 of 104

VI. Kiểu dữ liệu xâu (str)

  • Lặp xâu: dùng dấu *

<biến xâu>*<số lần ghép> Hoặc <số lần ghép>*<biến xâu>

  • Ví dụ:

s = 'Python'

s1 = s*8

s2 = 8*s

print(s1)

print(s2)

Tập huấn NNLT Python

79

PythonPythonPythonPythonPythonPythonPythonPython

PythonPythonPythonPythonPythonPythonPythonPython

80 of 104

VI. Kiểu dữ liệu xâu (str)

  • Để lấy xâu con gồm các ký tự liên tiếp từ chỉ số a đến chỉ số b – 1 (a < b):

<biến xâu>[a:b]

  • Ví dụ:

s = 'Python'

s1 = s[0:3]

s2 = s[1:5]

print('Xâu con từ chỉ số 0 đến 2:',s1)

print('Xâu con từ chỉ số 1 đến 4:',s2)

Tập huấn NNLT Python

80

Xâu con từ chỉ số 0 đến 2: Pyt

Xâu con từ chỉ số 1 đến 4: ytho

81 of 104

VI. Kiểu dữ liệu xâu (str)

  • Chú ý:
    • Để lấy a ký tự đầu của xâu:

<biến xâu>[:a]hoặc <biến xâu>[0:a].

    • Để lấy các ký tự từ chỉ số a đến cuối xâu:

<biến xâu>[a:]

Tập huấn NNLT Python

81

82 of 104

VI. Kiểu dữ liệu xâu (str)

  • Để đảo ngược thứ tự xâu:

<biến xâu>[::-1]

  • Ví dụ:

s = 'abcdefg'

s1 = s[::-1]

print(s1)

Tập huấn NNLT Python

82

gfedcba

83 of 104

VI. Kiểu dữ liệu xâu (str)

  • Chú ý:
    • Khi khai báo một biến xâu, ta không thể thay đổi các ký tự trong biến xâu đó
    • Để kết nối xâu với số hoặc các kiểu dữ liệu khác, ta có thể thực hiện ép kiểu như sau:

str(<biến kiểu số>)

Tập huấn NNLT Python

83

84 of 104

VI. Kiểu dữ liệu xâu (str)

  • Để tách xâu thành danh sách các xâu con mà ký tự phân tách là các ký tự trắng (dấu cách) ta thực hiện:

<biến xâu>.split()

  • Ví dụ:

s = 'Tự học lập trình Python'

L = s.split()

print('Xâu được tách thành:')

print(L)

Tập huấn NNLT Python

84

Xâu được tách thành:

['Tự', 'học', 'lập', 'trình', 'Python']

85 of 104

VI. Kiểu dữ liệu xâu (str)

  • Tham số ký tự phân tách, cú pháp:

<biến xâu>.split(<ký tự phân tách>)

  • Ví dụ:

s = 'Tự học lập trình, Python'

L = s.split(',')

print('Xâu được tách thành:')

print(L)

Tập huấn NNLT Python

85

Xâu được tách thành:

['Tự học lập trình', ' Python']

86 of 104

VI. Kiểu dữ liệu xâu (str)

  • Để nối các phần tử (là xâu) của một danh sách thành một xâu:

‘ký tự nối’.join(<biến danh sách>)

  • Ví dụ:

a = ['1', '2', '3', '4']

b = ','.join(a)

print(type(b))

print(b)

Tập huấn NNLT Python

86

<class 'str'>

1,2,3,4

87 of 104

VI. Kiểu dữ liệu xâu (str)

  • Chuyển đổi ký tự hoa, ký tự thường:
    • Để trả về xâu ký tự hoa:

<biến xâu>.upper()

    • Để trả về xâu ký tự thường:

<biến xâu>.lower()

    • Để trả về xâu có ký tự đầu tiên thành ký tự hoa:

<biến xâu>.capitalize()

    • Để trả về xâu có các ký tự đầu tiên của các từ thành ký tự hoa:

<biến xâu>.title()

    • Để trả về xâu có các ký tự hoa thành ký tự thường, ký tự thường thành ký tự hoa:

<biến xâu>.swapcase()

Tập huấn NNLT Python

87

88 of 104

VI. Kiểu dữ liệu xâu (str)

  • Ví dụ:

s = 'abCDe123'

s1 = s.upper()

s2 = s.lower()

print('Xâu hoa:',s1)

print('Xâu thường:',s2)

s3 = 'tự học lập trình PYTHON'

print('Xâu có ký tự hoa đầu xâu:',s3.capitalize())

print('Xâu có ký tự hoa đầu mỗi từ:',s3.title())

print('Xâu có chuyển đổi qua lại giữa hoa và thường:',s3.swapcase())

Tập huấn NNLT Python

88

Xâu hoa: ABCDE123

Xâu thường: abcde123

Xâu có ký tự hoa đầu xâu: Tự học lập trình python

Xâu có ký tự hoa đầu mỗi từ: Tự Học Lập Trình Python

Xâu có chuyển đổi qua lại giữa hoa và thường: TỰ HỌC LẬP TRÌNH python

89 of 104

VI. Kiểu dữ liệu xâu (str)

  • Phương thức đếm số lần xuất hiện của xâu con:

s.count(sb)

  • Công dụng: trả về số lần xuất hiện của xâu sb trong xâu s
  • Tham số với phương thức count:
    • Phương thức s.count(sb,i) trả về số lần xuất hiện của xâu sb trong xâu s tính từ chỉ số i.
    • Phương thức s.count(sb,i,j) trả về số lần xuất hiện của xâu sb trong xâu s tính từ chỉ số i đến chỉ số j – 1.

Tập huấn NNLT Python

89

90 of 104

VI. Kiểu dữ liệu xâu (str)

  • Ví dụ:

s1 = 'ab'

s2 = 'ab12abab'

x = s2.count(s1)

y = s2.count(s1,2)

z = s2.count(s1,1,6)

print('Số lần xuất hiện:',x)

print('Số lần xuất hiện:',y)

print('Số lần xuất hiện:',z)

Tập huấn NNLT Python

90

Số lần xuất hiện: 3

Số lần xuất hiện: 2

Số lần xuất hiện: 1

91 of 104

VI. Kiểu dữ liệu xâu (str)

  • Phương thức tìm kiếm xâu con:

s.find(sb)

  • Công dụng: trả về chỉ số đầu tiên mà xâu sb xuất hiện trong xâu s. Nếu sb không xuất hiện trong s thì kết quả là -1.
  • Tham số với phương thức find:
    • Phương thức s.find(sb,i) trả về chỉ số đầu tiên mà xâu sb xuất hiện trong xâu s tính từ chỉ số i.
    • Phương thức s.find(sb,i,j) trả về chỉ số đầu tiên mà xâu sb xuất hiện trong xâu s tính từ chỉ số i đến chỉ số j - 1.

Tập huấn NNLT Python

91

92 of 104

VI. Kiểu dữ liệu xâu (str)

  • Ví dụ:

s1 = 'ab'

s2 = 'ababab'

s = 'acabab'

x = s.find(s1)

y = s.find('abc')

print('Vị trí đầu tiên xâu s1 trong s:',x)

print('Vị trí đầu tiên xâu abc trong s:',y)

print('Vị trí đầu tiên xâu s1 trong s2 tính từ vị trí số 1:',s2.find(s1,1))

print('Vị trí đầu tiên xâu s1 trong s2 tính từ vị trí số 3 đến 5:',s2.find(s1,3,6))

Tập huấn NNLT Python

92

Vị trí đầu tiên xâu s1 trong s: 2

Vị trí đầu tiên xâu abc trong s: -1

Vị trí đầu tiên xâu s1 trong s2 tính từ vị trí số 1: 2

Vị trí đầu tiên xâu s1 trong s2 tính từ vị trí số 3 đến 5: 4

93 of 104

VI. Kiểu dữ liệu xâu (str)

  • Phương thức thay thế xâu con:

s.replace(x, y)

  • Công dụng: trả về xâu được tạo thành bằng cách thay thế tất cả các xâu con x bằng xâu y trong xâu s.
  • Tham số với phương thức replace:
    • Phương thức s.replace(x, y, z) trả về một xâu được tạo thành bằng cách thay thế tất cả xâu con x bằng xâu y nhưng số lần thay thế nhiều nhất là z. Việc thay thế lần lượt đối với các xâu con từ trái sang phải.

Tập huấn NNLT Python

93

94 of 104

VI. Kiểu dữ liệu xâu (str)

  • Ví dụ:

s1 = 'aaabaa'

s2 = s1.replace('aa','AA')

s3 = 'aaaaaabb'

s4 = s3.replace('aa','AA',2)

print(s2)

print(s4)

Tập huấn NNLT Python

94

AAabAA

AAAAaabb

95 of 104

VI. Kiểu dữ liệu xâu (str)

  • Bài tập vận dụng câu lệnh kiểu xâu:

Tập huấn NNLT Python

95

96 of 104

�VII. Lập trình hàm

Tập huấn NNLT Python

96

97 of 104

VII. Lập trình hàm

  • Hàm là một dãy các lệnh có liên quan đến nhau được dùng để thực hiện một tác vụ, nhiệm vụ cụ thể nào đó và có thể được thực hiện (được gọi) từ nhiều vị trí trong chương trình

Tập huấn NNLT Python

97

98 of 104

VII. Lập trình hàm

  • Khai báo hàm:

def <tên hàm>([các tham số]):

<lệnh/ khối lệnh thực hiện nhiệm vụ>

  • Tên hàm phải theo quy tắc đặt tên trong Python
  • [các tham số] là các biến hoặc danh sách các biến được khai báo cho dữ liệu vào của hàm, được gọi là tham số hình thức.
  • Nếu CTC cần trả về một giá trị sau khi tính toán thì sử dụng câu lệnh return <giá trị> để trả về <giá trị> đó qua tên của chương trình con.

Tập huấn NNLT Python

98

99 of 104

VII. Lập trình hàm

  • Các biến được khai báo bên trong một hàm chỉ sử dụng được bên trong hàm đó được gọi là biến cục bộ hay biến local. Chương trình chính không sử dụng được
  • Các biến của chương trình chính được gọi là biến toàn cục.

Tập huấn NNLT Python

99

100 of 104

VII. Lập trình hàm

  • Ví dụ: Giá trị biến toàn cục n được sử dụng trong chương trình con Tong.

n = 10 # n là biến toàn cục

def Tong():

i = 0 # i là biến cục bộ

s = 0 # s là biến cục bộ

while i<=n:

s = s + i

i = i +1

return s

print('Tổng:',Tong())

Tập huấn NNLT Python

100

Tổng: 55

101 of 104

VII. Lập trình hàm

  • Nếu hai biến cùng tên thì chương trình con chứa biến cục bộ sẽ sử dụng biến cục bộ đó.

n = 10 # biến toàn cục

def Tong():

i = 0 # biến cục bộ

s = 0 # biến cục bộ

n = 20 # biến cục bộ

while i<=n:

s = s + i

i = i +1

return s

print('Tổng:',Tong())

print('Giá trị n:',n)

Tập huấn NNLT Python

101

Tổng: 210

Giá trị n: 10

102 of 104

VII. Lập trình hàm

  • Ví dụ:

n = 10 # biến toàn cục

s = 0 # biến toàn cục

def Tong():

i = 0 # biến cục bộ

while i<=n:

s = s + i

i = i +1

return s

print('Tổng:',Tong())

Tập huấn NNLT Python

102

Traceback (most recent call last):

File "E:/VD-B13.py", line 9, in <module>

print('Tổng:',Tong())

File "E:/VD-B13.py", line 6, in Tong

s = s + i

UnboundLocalError: local variable 's' referenced before assignment

103 of 104

VII. Lập trình hàm

  • Ví dụ:

n = 10 # biến toàn cục

s = 0 # biến toàn cục

def Tong():

i = 0 # biến cục bộ

while i<=n:

global s

s = s + i

i = i +1

return s

print('Tổng:',Tong())

Tập huấn NNLT Python

103

Tổng: 55

104 of 104

VII. Lập trình hàm

  • Bài tập vận dụng lập trình hàm:

Tập huấn NNLT Python

104