You are on page 1of 131

BÀI GIẢNG ĐIỆN TỬ

HP: LẬP TRÌNH VỚI PYTHON

Số tín chỉ: 3
Bộ môn: Tin học

7/2020 1
CHƯƠNG 2.
CÁC THÀNH PHẦN CƠ SỞ
CỦA PYTHON

Số tiết: 8 LT
KHỞI ĐỘNG BÀI

3
KHỞI ĐỘNG BÀI
• Top 10 ngôn ngữ lập trình phổ biến nhất trên thế giới 2022

Nguồn: https://www.ieee.org

4
MỤC TIÊU CHƯƠNG 2

Cài đặt được IDE lập trình Python

Trình bày được các bước viết và biên dịch chương trình

Liệt kê và trình bày được các yếu tố cơ bản trong NNLT Python

Ghi nhớ và vận dụng các lệnh cơ bản trong NNLT Python vào
1 số bài toán đơn giản.

5
NỘI DUNG CHƯƠNG 2

2.1. 2.2. 2.3.


Giới thiệu
Các yếu tố
về ngôn Các lệnh cơ
cơ bản của
ngữ lập bản
Python
trình Python

6
NỘI DUNG CHƯƠNG 2
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.1.1. Lịch sử phát triển
2.1.2. Đặc điểm của ngôn ngữ Python
2.1.3. Cài đặt công cụ lập trình Python
2.1.4. Các bước viết và biên dịch chương trình với Python

7
NỘI DUNG CHƯƠNG 2
2.2. Các yếu tố cơ bản của ngôn ngữ lập trình Python
2.2.1. Bảng chữ cái
2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình
8
NỘI DUNG CHƯƠNG 2
2.3 Các lệnh cơ bản
2.3.1. Lệnh gán
2.3.2. Lệnh vào, ra dữ liệu
2.3.3. Các lệnh điều khiển rẽ nhánh
2.3.4. Các lệnh điều khiển chu trình

9
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.1.1. Lịch sử phát triển
2.1.2. Đặc điểm của ngôn ngữ Python
2.1.3. Cài đặt công cụ lập trình Python
2.1.4. Các bước viết và biên dịch chương trình với Python

10
2.1.1. Lịch sử phát triển
• Python được tạo ra bởi Guido van Rossum
• Kế thừa từ ngôn ngữ ABC
• , phát triển từ 12/1989 và phát hành năm 1991 Guido van Rossum
(31/1/1956)
• Phiên bản chính thức: ver1 (1/1994), ver2
Công bố lần đầu Version 1 Version 2 Version 3
(16/10/2000),
1989 ver31991
(3/12/2008) 2000
(3.10) 2008

Kiểu dữ liệu cơ bản Hàm lambda Hỗ trợ Unicode Hỗ trợ Unicode


Cấu trúc điều khiển Hàm map, … Sửa lỗi Sửa lỗi
Hỗ trợ hàm, mo-dun Tự động thu Cải tiến hiệu suất
gom đối tượng

11
2.1.1. Lịch sử phát triển
• Python là ngôn ngữ lập trình bậc cao, hướng đối tượng
• Là ngôn ngữ mã nguồn mở(
• Là ngôn ngữ kịch bản3 Guido van Rossum
(31/1/1956)
– Cho phép người lập trình viết các đoạn mã nhỏ thực hiện
nhiệm cụ thể như xử lý văn bản, bảng tính, trang web động,..
– Khai báo biến tự nhiên, phong phú và động
– Nhiều phép tính cấp cao được cung cấp sẵn
– Thông dịch thay vì biên dịch
• Biên dịch: dịch toàn bộ thành mã máy rồi thực thimã máy rồi thực thi
• Thông dịch: dịch từng lệnh, xong lệnh nào chạy lệnh đó.

12
2.1.1. Lịch sử phát triển
• Là ngôn ngữ phổ biến và được sử dụng cho:
– Phát triển web (phía server)
– Phát triển phần mềm Guido van Rossum
– Toán học (31/1/1956)
– Phân tích dữ liệu
– Kịch bản hệ thống

13
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.1.1. Lịch sử phát triển
2.1.2. Đặc điểm của ngôn ngữ Python
2.1.3. Cài đặt công cụ lập trình Python
2.1.4. Các bước viết và biên dịch chương trình với Python

14
2.1.2. Đặc điểm của ngôn ngữ Python

• Là ngôn ngữ lập trình kịch bản (script language)


• Là ngôn ngữ động (dynamic language)
• Hỗ trợ cho các mô hình lập trình khác nhau, bao gồm: lập trình thủ tục, lập
trình hướng đối tượng.
• Mã code Python có thể được viết bởi 1 text Editor hoặc 1 môi trường phát
triển tích hợp (IDE) như Thony, Pycharm, Netbeans hay Eclipse và được
thực thi trong trình thông dịch Python. → xây dựng mẫu nhanh

15
2.1.2. Đặc điểm của ngôn ngữ Python

• Python có thể làm việc trên các nền tảng khác nhau: Windows, Mac, Linux,
Raspberry Pi,…
• Python có cú pháp đơn giản, rõ ràng (tương tự tiếng Anh) và cực kỳ linh
hoạt (versatile) (giống giả mã)
• Ví dụ:
x=2 # Không cần khai báo kiểu dữ liệu
y=4
x, y = y, x # Hoán vị không cần biến trung gian
x = “Y1A”
16
2.1.2. Đặc điểm của ngôn ngữ Python

• Python sử
Đặcdụng
điểm dòng mới (tương ứng enter) để hoàn
Python Ngôn ngữ một
thành kháccâu lệnh
(các
Hoàn câungữ
ngôn
thành lệnh khác thườngNhấn dấu chấm
dùngEnter phẩyphẩy
Dấu chấm hoặc dấu hoặc
(semicolon) ngoặc dấu
đơn
Xácngoặc đơn vi(parentheses)
định phạm khối lệnh (vòng Thụt lề Dấu ngoặc nhọn (curly brackets)
•lặp,Python
hàm, lớp)dựa vào thụt lề (indentation), sử dụng khoảng trắng để xác định
(indentation)
Viếtphạm
chươngvi,trình có số
ví dụ dòngvi
phạm lệnh
củaÍtvòng lặp, hàmNhiều
và lớp (các ngôn ngữ khác
Tốcthường
độ lập trình
dùng dấu ngoặc nhọn Nhanh hơnbrackets)
– curly Chậm hơn

Lưu ý:
• Python có thư viện tiêu chuẩn toàn diện cho nhiều tác vụ, cộng đồng phát
triển lớn.
• Có thể mở rộng đơn giản thông qua C/C++, đóng gói các thư viện C/C++

17
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.1.1. Lịch sử phát triển
2.1.2. Đặc điểm của ngôn ngữ Python
2.1.3. Cài đặt công cụ lập trình Python
2.1.4. Các bước viết và biên dịch chương trình với Python

18
2.1.2. Đặc điểm của ngôn ngữ Python
• Zen of Python: Bản tóm tắt các nguyên tắc lập trình và triết lý thiết kế của
Python.
– Đây là một tài liệu văn bản ngắn được viết bởi Tim Peters, một trong
những tác giả của ngôn ngữ Python.
– Zen of Python: là một hướng dẫn về cách lập trình Python tốt hơn, cách
sử dụng các tính năng của Python và cách tư duy của người lập trình
Python.
– Để hiển thị các câu trong Zen of python, hãy nhập lệnh "import this" rồi
thực thi lệnh.
19
2.1.2. Đặc điểm của ngôn ngữ Python
Zen of Python các nguyên tắc phần mềm ảnh hưởng thiết kế của Python (19):
1. Đẹp tốt hơn xấu (Beautiful/ ugly)
2. Rõ ràng tốt hơn ngầm/ ẩn (explicit/implicit)
3. Đơn giản tốt hơn phức tạp (Simple/ complex)
4. Phức tạp tốt hơn lộn xộn (complex/complicate)
5. Phẳng hơn tốt hơn là lồng nhau (flat/nested)
6. Thưa tốt hơn dày (Sparse/Dense)
7. Số lượng có thể đọc (Readability counts)
8. Các trường hợp đặc biệt không đủ đặc biệt để phá vỡ quy tắc (break the rules)
9. Thực tế đánh bại sự trong sáng (practicality/ purity).
10+11. Lỗi không nên trôi qua im lặng trừ khi sự im lặng là rõ ràng (pass silently)
20
2.1.2. Đặc điểm của ngôn ngữ Python
Các nguyên tắc phần mềm ảnh hưởng thiết kế của Python (19):
12. Khi đối mặt với sự mơ hồ, hãy từ chối cám dỗ của việc suy đoán (ambiguity).
13. Nên có một – và thà chỉ có một – cách rõ ràng để làm điều đó
14. Cách ban đầu có thể không rõ ràng, trừ phi bạn là người Hà Lan.
15. Bây giờ thì tốt hơn không bao giờ,
16. Không bao giờ thì thường là tốt hơn ngay bây giờ.
17. Nếu bản thực hiện mà khó giải thích, thì đó là một ý tưởng tồi.
18. Nếu bản thực hiện mà dễ giải thích, thì đó có thể là một ý tưởng hay.
19. Không gian tên là một ý tưởng rất chi là vĩ đại—hãy làm thế nhiều hơn!
21
2.1.2. Đặc điểm của ngôn ngữ Python
Các nguyên tắc phần mềm ảnh hưởng thiết kế của Python:
Ví dụ2: tính tổng
1. Đẹp tốt hơn xấu #không tốt
danh_sach = [1,2,3,4,5]
2. Rõ ràng tốt hơn ngầm/ ẩn tong = sum(danh_sach)

3. Đơn giản tốt hơn phức tạp #tốt


Ví dụ 1: Số lớn tong = 0
#không tốt for x in danh_sach:
a=7;b=6; tong += x
if a>b:print(“So lon=“,a)
Ví dụ 3:
#tốt chuoi1 = “DHTM”
a = 7 chuoi2 = “TMU”
b = 6 chuoi1 == chuoi2 # tốt
if a > b: strcmp(chuoi1,chuoi2) #ko tốt
print(“So lon = “,a)
22
2.1.2. Đặc điểm của ngôn ngữ Python
Các nguyên tắc phần mềm ảnh hưởng thiết kế của Python:
4. Phức tạp tốt hơn lộn xộn (complex/complicate)
5. Phẳng hơn tốt hơn là lồng nhau (flat/nested)
Ví dụ 4: Tính chỉ số BMI Ví dụ 5: Ngày cuối tuần
# tốt # không tốt
def tinh_bmi(c_cao,can_nang): def is_weekend(day):
bmi = can_nang / (c_cao ** 2) if day == 'Saturday':
return round(bmi, 2) return True
else:
if day == 'Sunday':
# không tốt return True
def tinh_bmi(cc,cn): else:
a = cc * cc return False
b = cn / a # tốt
bmi = round(b,2) def is_weekend(day):
return bmi return day in ['Saturday', 'Sunday']
23
2.1.2. Đặc điểm của ngôn ngữ Python

Các nguyên tắc phần mềm ảnh hưởng thiết kế của Python:
6. Thưa tốt hơn dày (Sparse/Dense)
7. Số lượng có thể đọc
Ví dụ 6: Số lần xuất hiện của các từ Ví dụ 7: Bình phương

# sử dụng từ điển -> tốt #không tốt


word_counts = {'the': 10, 'cat': 3, 'dog': 5} def sqr(x):
r=x*x
# truy xuất thông tin return r
the_count = word_counts['the']
#tốt hơn
# sử dụng danh sách → không tốt def square(x):
word_counts = [('the', 10), ('cat', 3), ('dog', 5)] result = x * x
for word, count in word_counts: return result
if word == 'the':
the_count = count
24
2.1.2. Đặc điểm của ngôn ngữ Python
Các nguyên tắc phần mềm ảnh hưởng thiết kế của Python:
8. Các trường hợp đặc biệt không đủ đặc biệt để phá vỡ quy tắc
9. Thực tế đánh bại sự trong sáng
10+11. Lỗi không nên trôi qua im lặng trừ khi sự im lặng là rõ ràng

Ví dụ 8: Kiểm tra giá trị trong danh sách

values = [1, 2, 3, None, 4, 5]


if None in values:
print("None is in the list")

25
2.1.2. Đặc điểm của ngôn ngữ Python
Các nguyên tắc phần mềm ảnh hưởng thiết kế của Python:
12. Khi đối mặt với sự mơ hồ, hãy từ chối cám dỗ của việc suy đoán (ambiguity).
13. Nên có một – và thà chỉ có một – cách rõ ràng để làm điều đó
14. Cách ban đầu có thể không rõ ràng, trừ phi bạn là người Hà Lan.
15. Bây giờ thì tốt hơn không bao giờ,
16. Không bao giờ thì thường là tốt hơn ngay bây giờ.
17. Nếu bản thực hiện mà khó giải thích, thì đó là một ý tưởng tồi.
18. Nếu bản thực hiện mà dễ giải thích, thì đó có thể là một ý tưởng hay.
19. Không gian tên là một ý tưởng rất chi là vĩ đại—hãy làm thế nhiều hơn!

26
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.1.1. Lịch sử phát triển
2.1.2. Đặc điểm của ngôn ngữ Python
2.1.3. Cài đặt công cụ lập trình Python
2.1.4. Các bước viết và biên dịch chương trình với Python

27
2.1.3. Cài đặt IDE lập trình Python
• Nhiều máy PC và Mac có thể được cài sẵn Python
– Để check đã cài Python: Vào Command Line → gõ lệnh: python --version
– Hoặc vào Link download: https://www.python.org/

• Các IDE: Visual Studio Code, Thony, Pycharm, Netbeans hay Eclipse
• Lưu ý với IDE: có 2 cửa sổ khác nhau
– Cửa sổ Shell cho phép nhập mã và xem kết quả trên cùng cửa sổ (áp dụng với đoạn
lệnh nhỏ),
– hoặc mở cửa sổ mới để viết chương trình riêng. (cửa sổ Shell chạy bằng enter, cửa sổ
mới chạy bằng F5 hoặc thực đơn)

28
2.1.3. Cài đặt công cụ lập trình Python

• Giới thiệu về Pycharm:


– Pycharm là công cụ soạn thảo lập trình Python nổi tiếng nhất hiện
nay

– Pycharm có giao diện dễ dùng, giúp tăng hiệu suất công việc khi
viết chương trình lớn, …

– Pycharm là sản phẩm của hãng Jet Brains, công ty số 1 thế giới
hiện nay về các công cụ IDE lập trình hiện đại.

– Phiên bản Pycharm Edu được phát hành miễn phí

29
2.1.3. Cài đặt công cụ lập trình Python

• Cài đặt Pycharm:


– Bước 1: Tải phiên bản Pycharm mới nhất về
máy theo địa chỉ
https://www.jetbrains.com/pycharm/download/#s
ection=windows → tải bản Community

– Bước 2: Sau khi tải về máy, nhấn chuột kép vào


tệp pycharm-community-2022.3.3.exe để cài đặt

30
2.1.3. Cài đặt công cụ lập trình Python
Hệ thống thực đơn, thanh công cụ chính
Giao diện của Pycharm:

Khu vực xem và điều


khiển các file, projects
của Python

Cửa sổ soạn thảo


Nút chạy

Khu vực debug


Cửa sổ Python Shell
chương trình

31
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.1.1. Lịch sử phát triển
2.1.2. Đặc điểm của ngôn ngữ Python
2.1.3. Cài đặt công cụ lập trình Python
2.1.4. Các bước viết và biên dịch chương trình với Python

32
2.1.4. Các bước viết và dịch chương trình

• Cách 1: Chạy trên Command Line


– Bấm tổ hợp phím Cửa sổ +R
– Gõ cmd
– Trên cửa sổ Command Prompt của Windows, gõ lệnh Python để chuyển sang
Python
– Nhập lệnh và nhấn Enter thực thi lệnh
– Nếu viết chương trình thành các file/ module/package thì thực thi chương trình bằng
lệnh path//tên_tệp.py

33
2.1.4. Các bước viết và dịch chương trình

• Cách 1: Chạy trên Command Line


– Một số lệnh cần biết:
• Lệnh chuyển thư mục làm việc sang thư mục chứa tệp python:
cd /d path
Python tên_tệp.py
• Ví dụ chuyển thư mục đang làm việc sang thư mục bài tập Python trong ổ E
cd /d E:\Bai tap Python
• Lệnh xóa màn hình
import os
ret=os.system('cls')
Lưu ý: Cách này chỉ áp dụng đối với đoạn code ngắn (dùng ; để phân tách các câu lệnh) → không lưu
và sửa được code

34
2.1.4. Các bước viết và dịch chương trình
• Ví dụ 1: Mở Command Prompt của Windows chạy các lệnh Python sau:
print(“Chào mừng bạn đến với Python”)
10 + 2
3 ** 2

35
2.1.4. Các bước viết và dịch chương trình
• Cách 2: Sử dụng Pycharm
– Khởi động Pycharm
– Tạo dự án project mới
– Xác định vị trí lưu
– Tạo file mới: File → New →
Python File → đặt tên tệp
– Nhập tập lệnh Python
– Bấm nút Run hoặc nhấn
Shift+F10 (chú ý tên file thực
thi)

36
2.1.4. Các bước viết và dịch chương trình
• Ví dụ 2: Mở PyCharm tạo file lưu và chạy các lệnh Python sau:
print(“Chào mừng bạn đến với Python”)
print(10 + 2)
print(3 ** 2)

37
NỘI DUNG CHƯƠNG 2
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.2. Các yếu tố cơ bản của Python
2.3 Các lệnh cơ bản

38
2.2. Các yếu tố cơ bản của Python

2.2.1. Bảng chữ cái


2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình

39
2.2.1. Bảng chữ cái
• Python sử dụng bộ kí tự Unicode, bao gồm:
– Chữ cái: A → Z, a →z

– Dấu gạch nối: _

– Số: 0 → 9

– Các dấu phép toán số học: + - * / <> % ^

– Các cặp dấu ngoặc ( ) { } [ ]

– Các dấu ngăn cách: dấu cách, dấu nhảy tab, dấu xuống dòng

– Các dấu khác: # $ . , : ; “ ! ‘ ? @

40
2.2.1. Bảng chữ cái

• Đặc điểm của bộ ký tự Unicode:


- Bộ ký tự Unicode gồm hơn 143,000 ký tự

- Mỗi kí tự tương ứng một mã

- Bộ ký tự toàn cầu, cho phép Python hỗ trợ các ngôn ngữ khác nhau, giúp
lập trình viên tạo ra các ứng dụng quốc tế đa ngôn ngữ

- Unicode có nhiều hệ thống mã hóa ký tự, trong đó UTF-8 có phổ biến nhất.

• Lưu ý: có thể sử dụng tiếng Việt trong viết câu lệnh và ghi chú thích

41
2.2. Các yếu tố cơ bản của Python

2.2.1. Bảng chữ cái


2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình

42
2.2.2. Từ khóa
• Khái niệm: Là một tập các từ dùng
riêng cho từng ngôn ngữ lập trình. Mỗi
từ khóa có một ý nghĩa và tác dụng cụ
thể. Ví dụ như tên kiểu dữ liệu, tên toán
tử, tên hàm v.v..
• Lưu ý:
– Không được đặt tên các đối tượng khác
trùng tên với từ khóa như biến, hằng,
mảng…
– Từ khóa phải viết bằng chữ thường.

43
2.2. Các yếu tố cơ bản của Python

2.2.1. Bảng chữ cái


2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình

44
2.2.3. Tên gọi
• Khái niệm: Là một dãy các ký tự đặt cạnh nhau, được dùng để định danh
các đối tượng khác nhau trong chương trình.
• Tên được dùng để đặt tên cho tên biến, tên hàm, tên hằng, tên danh sách,
tên từ điển, …
• Quy tắc đặt tên:
– Tên chỉ được chứa các chữ cái, chữ số và dấu gạch nối _
– Tên phải bắt đầu bằng chữ cái hoặc dấu gạch nối (tên biến)
– Không được trùng với từ khóa
– Phân biệt giữa chữ hoa và chữ thường
– Không được dùng các ký tự đặc biệt như @, $, %, …

45
2.2.3. Tên gọi
• Ví dụ: Xác định các tên hợp lệ để đặt tên biến trong chương trình

Tên biến Hợp lệ


x Có

dia_chi Có

-hoten Không

in Không

1a Không

_1a Có

a% Không

46
2.2. Các yếu tố cơ bản của Python

2.2.1. Bảng chữ cái


2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình

47
2.2.4. Chú thích
• Mục đích: dùng để giải thích, làm rõ nghĩa cho một câu lệnh nào đó, và được
trình dịch bỏ qua khi dịch và chạy chương trình
• Vị trí: Ở bất kỳ đâu trong chương trình, đứng riêng biệt hoặc sau các câu lệnh.
• Phân loại: chú thích trên 1 dòng và chú thích trên nhiều dòng
– Trên 1 dòng: Dùng dấu thăng # Nội dung chú thích
– Trên nhiều dòng:
• C1: dùng dấu # cho từng dòng
• C2: dùng ba dấu nháy đơn hoặc 3 dấu nháy kép (bản chất là khai báo một chuỗi trên nhiều
dòng mà không gán cho biến nào)
• Ví dụ:
‘‘‘ Lưu ý: cách chú thích nhiều dòng này yêu cầu các dòng
Chú thích 1 đều có độ thụt lề (indentation) như nhau
Chú thích 2
‘‘‘ 48
2.2.4. Chú thích
Câu 1. Cho biết khẳng định nào sau đây là đúng
A. Python sẽ bỏ qua chú thích khi dịch chương trình
B. Chú thích bắt buộc phải có trong chương trình
C. Chú thích làm thay đổi kết quả chạy dịch chương trình
D. Python console không hỗ trợ chú thích

49
2.2.4. Chú thích
Câu 2. Hãy chọn đáp án đúng
A. Chú thích trên 1 dòng bắt đầu bởi dấu #
B. Chú thích trên nhiều dòng có thể bắt đầu và kết thúc bởi 3 dấu nháy đơn
C. Chú thích trên nhiều dòng có thể bắt đầu và kết thúc bởi 3 dấu nháy kép
D. Tất cả những điều trên đều đúng

50
2.2.4. Chú thích
Câu 3. Chọn đáp án đúng về ghi chú thích trong Python
A. Ký tự #
B. 1 dấu ngoặc đơn
C. Một dấu ngoặc kép
D. Ba dấu ngoặc đơn

51
BÀI TẬP
Bài 1. Sử dụng Pycharm nhập và chạy đoạn chương trình sau:

# xây dựng chương trình hiển thị ra màn hình hình chữ nhật
print("* * * * * * * * * * *")
print("* *")
print("* *")
print("* * * * * * * * * * *")

52
NỘI DUNG CHƯƠNG 2
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.2. Các yếu tố cơ bản của Python
2.3 Các lệnh cơ bản

53
2.2. Các yếu tố cơ bản của Python

2.2.1. Bảng chữ cái


2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình

54
2.2.5. Các kiểu dữ liệu cơ sở
• Khái niệm kiểu dữ liệu: là một tập hợp các giá trị mà một biến thuộc
kiểu đó có thể nhận được, và trên đó xác định một số phép toán.
• Phân loại:
– Kiểu dữ liệu cơ sở: kiểu số (int, float, complex), kiểu xâu ký tự (str), kiểu logic (bool)
– Kiểu dữ liệu có cấu trúc: kiểu danh sách (list), kiểu bộ (tuple), kiểu tập hợp (set), kiểu
từ điển (dict)
– Kiểu xây dựng sẵn (kiểu nhị phân (bytearray, bytes, memoryview), không kiểu
(NoneType).
– Kiểu do người dùng tự định nghĩa (class)
– Để xác định kiểu của 1 đối tượng dùng hàm type()

55
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu số: gồm 3 loại số nguyên (int), thực
(float), phức (complex)
• X=2
– int: bao gồm các số nguyên dương hoặc âm, • Y=-3.6
không có phần thập phân và không giới hạn độ
dài • Z=6e3
– float: số thực hay số dấu chấm động là số • F=-14.5E3
dương hoặc âm có chứa 1 hoặc nhiều chữ số
phần thập phần/ có thể biểu diễn bằng cách viết • C=2+5j
khoa học. (e/E để chỉ lũy thừa của 10)
– complex: số phức có a là phần thực, b là phần
ảo
• Cú pháp tạo số phức: a+bj

56
2.2.5. Các kiểu dữ liệu cơ sở
• Thứ tự của các phép toán:
Thứ tự ưu tiên Toán tử Diễn giải
1 function(), (), ** Các hàm, trong ngoặc, toán tử mũ
2 * / % // Phép nhân, chia, chia lấy phần dư, lấy phần nguyên
3 +- Toán tử cộng, trừ
4 <= < > >= Toán tử so sánh lớn nhỏ
5 <> == != Toán tử so sánh bằng, khác
6 = %= /= //= -= += *= **= Các toán tử gán
7 in, is, is not Các toán tử kiểm tra
8 not, or, and Các toán tử logic
• Ví dụ: x = 5.0
y = (2 * x ** 2 + 7 * x +13)/ (x + 2)
57
2.2.5. Các kiểu dữ liệu cơ sở
X=1 # int
• Chuyển đổi kiểu dữ liệu (trừ số phức không y=2.8 # float
z=1j # complex
chuyển về được các kiểu số khác): các kiểu số #convert from int to float:
có thể chuyển về các kiểu khác a=float(x)
#convert from float to int:
• Cú pháp chuyển KDL: b=int(y)
#convert from int to complex:
Tên_biến= tên_kiểu(biến_cũ) c=complex(x)
Tên_biến = tên_kiểu (biến_cũ) print(a)
print(b)
print(c)
print(type(a))
print(type(b))
print(type(c))

58
2.2.5. Các kiểu dữ liệu cơ sở
Số ngẫu nhiên
• Module: random
• Function: randint, randbytes, randrange, seed,…
• Ví dụ:
import random
print(random.randrange(1, 10))
from random import randint
x = randint(1,10)
print('A random number between 1 and 10: ', x)

59
2.2.5. Các kiểu dữ liệu cơ sở
Các hàm toán học
• Module: math
• Functions: sin, cos, tan,exp, log,log10,factorial, sqrt,abs, floor, ceil, …, các hằng pi, e
• Ví dụ:
from math import abs,sin, pi
print('Pi is roughly', pi)
print('sin(0) =', sin(0))
print(abs(-4.3))
print(round(3.336, 2))
• Lưu ý: để xem các hàm có trong 1 module bằng cửa sổ Command Line và ý nghĩa của các
hàm, thực hiện như sau:
import module
dir(module)
help (module.tên_hàm)

60
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu xâu ký tự: là tất cả các giá trị, dữ liệu được khai báo thông qua cặp
dấu nháy đơn ‘ ’ hoặc dấu nháy kép “ ”, hay cũng có thể dùng cặp ba dấu
nháy đơn liên tiếp ‘‘‘ ’’’ hoặc 3 cặp nháy kép liên tiếp “““ ”””
– Thông thường, cặp nháy đơn hoặc nháy kép để biểu diễn một chuỗi ngắn
– Cặp 3 dấu nháy đơn hoặc 3 dấu nháy kép dùng cho một chuỗi dài nằm trên nhiều
dòng
• Ví dụ:
s = “Lập trình Python”
print(s)
str1 = “““ Đây là một chuỗi dài được trình bày trên nhiều
dòng sử dụng ba dấu nháy kép ”””
print(s1)
61
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu xâu ký tự (str):
Để in ra ký tự đặc biệt trong chuỗi, Python quy định sử dụng ký tự điều
khiển \ đặt trước ký tự đặc biệt
Các kiểu ký tự điều khiển dùng trong Python
Tên Ký hiệu Ý nghĩa
Alert \a Phát ra một tiếng bíp
Backspace \b Đưa con trỏ lùi về một khoảng trắng (một ký tự)
Newline \n Đưa con trỏ xuống dòng và về đầu dòng tiếp theo
Horizontal tab \t In ra một khoảng trắng bằng phím Tab
Single quote \’ In ra ký tự ‘
Double quote \” In ra ký tự “
Blackslash \\ In ra ký tự \
62
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu xâu ký tự (str):
– Các toán tử với ký tự
Toán tử Ý nghĩa Cú pháp Ví dụ
Nối các chuỗi với nhau s1+s2 s1 = “hello”; s2 = “world”
+
s1,s2 chuỗi ký tự s12 = s1+s2 #chuỗi s12 = Hello world
Tạo ra một chuỗi lặp đi lặp s*n s1 = “helllo”
lại với số lần bất kỳ s: chuỗi ký tự n=2
* n: 1 số nguyên s1n = s1 * n #s1n = hellohello
n<0: trả về chuỗi rỗng
Kiểm tra chuỗi con có nằm s1 in s s1 = “hello”
in trong chuỗi mẹ không s1, s: chuỗi ký tự s = “hello world”
s1 in s # True
63
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu xâu ký tự (str):
– Các thao tác với ký tự:
• Vị trí các ký tự trong chuỗi: Các ký tự trong chuỗi được đánh số thứ
tự từ 0 đến n-1 hoặc –n đến -1 từ trái qua phải

0 1 2 3 4 5 Vị trí dương
P Y T H O N Ký tự
-6 -5 -4 -3 -2 -1 Vị trí âm
s • Cú pháp truy xuất ký tự:
<Tên biến chuỗi> [<vị trí>]
64
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu xâu ký tự (str):
– Các thao tác với ký tự:
• Cú pháp truy xuất nhiều ký tự:
<Tên biến chuỗi> [<start>:<end>:<step>]
• Trong đó: <step> là bước nhảy lấy ký tự, nếu thiếu giá trị này thì bước
nhảy bằng 1.
• Ví dụ:
s1 = "Hello world"
s2 = s1[1:10:2] # s2=el ol
print(s2)
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu xâu ký tự (str):
– Các phương thức xử lý chuỗi:
Phương thức Ý nghĩa Cú pháp
Đếm số lần xuất hiện của 1 chuỗi con <chuỗi_mẹ.count(<chuỗi_con>,[,start[,end]])
count()
trong chuỗi mẹ
Viết hoa ký tự đầu tiên trong chuỗi, các <chuỗi>.capitalize()
capitalize() ký tự còn lại viết thường

lower() Chuyển tất cả các ký tự hoa trong chuỗi <chuỗi>.lower()


thành ký tự thường
Tách 1 chuỗi thành nhiều chuỗi con, các <chuỗi>.split(<char>[,n])
split() chuỗi con sau khi tách được lưu thành
một danh sách (list)
66
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu xâu ký tự (str):
– Các phương thức xử lý chuỗi:
Phương thức Ý nghĩa Cú pháp
Nối các chuỗi con thành 1 chuỗi <ký tự nối>.join(<tham sô>)
join()
Tham số: là 1 danh sách, tập chứa chuỗi con
find() Tìm kiếm chuỗi con trong 1 chuỗi mẹ <chuỗi_mẹ>.find(chuỗi_con[,start[,end]]) → chỉ mục
replace() Thay thế 1 chuỗi con cũ trong chuỗi <chuỗi>.replace(<chuỗi cũ>, <chuỗi mới>[,count])
bằng 1 chuỗi con mới khác Count: chỉ số lượng lần thay thế tính từ trái qua
Ví dụ: s1 = ("Lập", "trình", "Python") # 1 tuple Ví dụ 2:
s2 = " ".join(s1) # Ký tự nối là 1 dấu cách s = "Lập trình Python"
s3 = "ập" s1 = s.replace("Lập trình", "Tính toán trên")
n = s2.find(s3) # trả về 1 print(s1)
print(n)
67
2.2.5. Các kiểu dữ liệu cơ sở
• Kiểu xâu ký tự (str):
Ví dụ về các phương thức xử lý chuỗi:
Cho trước chuỗi str = “Python – ngôn ngữ lập trình bậc cao”, hãy:
1. Đếm số dấu cách trong chuỗi str và gán vào biến count_space
2. Đếm số lần 2 dấu cách đứng cạnh nhau xuất hiện trong chuỗi str. Sau đó loại bỏ các
dấu cách thừa trong chuỗi str.
3. Viết hoa ký tự đầu tiên chuỗi str
4. Chuyển chuỗi str thành chuỗi in hoa
5. Chuyển chuỗi str thành chuỗi ký tự thường

68
2.2. Các yếu tố cơ bản của Python

2.2.1. Bảng chữ cái


2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình

69
2.2.6. Các đại lượng
• Hằng (constant): là đại lượng giá trị không thay đổi trong quá trình tính toán.
– Vị trí: tham gia vào các biểu thức tính toán và các lệnh gán
– Giá trị xác định kiểu dữ liệu và các phép toán có thể thực hiện/ thao tác tương ứng.
– Ví dụ: a=5
b=“a b c d”
print(type(a))
print(type(b))
– Giá trị số: thực hiện các phép toán số học và các hàm trong module math
– Giá trị xâu: thực hiện các phép toán, hàm với ký tự, xâu ký tự (in, not in, print, len,
và các hàm upper, lower, find,…
70
2.2.6. Các đại lượng
• Biến (variable): là một đại lượng có giá trị thuộc một kiểu dữ liệu nào đó và
giá trị này có thể thay đổi trong thời gian tồn tại của biến.
– Trong Python không có câu lệnh khai báo biến như các ngôn ngữ khác, biến được tạo
tại thời điểm nó được gán 1 giá trị ban đầu.
– Cú pháp: tê
– n_biến=giá_trị tên_biến = giá_trị
– Kiểu dữ liệu của biến được xác định thông qua giá trị mà nó được gán và có thể thay
đổi liên tục.
– Ví dụ: x = 4 # x is of type int
print(x)
x = "Sally" # x is now of type str
print(x)

71
2.2.6. Các đại lượng
• Có thể gán nhiều giá trị cho nhiều biến: số lượng biến phải bằng số giá trị
x, y, z = "Orange", "Banana", "Cherry“
print(x); print(y); print(z)
• Có thể gán cùng một giá trị cho nhiều biến
x = y = z = "Orange“
print(x); print(y); print(z)
• Giải nén một tập hợp: để gán các giá trị trong một tập hợp (list, tuple…) cho
các biến
fruits = ["apple", "banana", "cherry"]
x, y, z = fruits
print(x); print(y); print(z)

72
2.2. Các yếu tố cơ bản của Python

2.2.1. Bảng chữ cái


2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình

73
2.2.7. Biểu thức
• Khái niệm: Biểu thức là sự kết hợp giữa các toán hạng và toán tử theo một cách
phù hợp để diễn đạt một công thức toán học nào đó.
Trong đó:
– Các toán hạng có thể là hằng, biến hay lời gọi hàm hoặc là một biểu thức con nào đó.
– Các toán tử phụ thuộc vào tập các toán tử mà ngôn ngữ hỗ trợ.
• Giá trị biểu thức: được ước lượng và có kiểu dữ liệu phụ thuộc vào các thành
phần trong biểu thức.
• Vị trí của biểu thức: xuất hiện trong bất kì một câu lệnh nào của Python
• Ví dụ: ─ Vế phải của một câu lệnh gán : ví dụ: x = 5*a ;
– Làm tham số thực sự của hàm: ví dụ: sqrt(y)
– Trong câu lệnh điều kiện if, for…
74
TRẮC NGHIỆM
Câu 1. Lệnh gán nào sau đây là đúng
A. z = print(z)
B. z = “23” + 50
C. z = 5, w = 10
D. z = w = 10

75
TRẮC NGHIỆM
Câu 2. Sau các lệnh thì giá trị của y bằng bao nhiêu?
x=y=1
x = x +1
A. 2
B. None
C. 1
D. True
76
TRẮC NGHIỆM
Câu 3. Câu lệnh nào sau đây hợp lệ?
A. z, w = 1
B. a_b_c =1
C. __abc__ = 1
D. –a_b_c- = 1

77
NỘI DUNG CHƯƠNG 2
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.2. Các yếu tố cơ bản của Python
2.3 Các lệnh cơ bản

78
2.2. Các yếu tố cơ bản của Python

2.2.1. Bảng chữ cái


2.2.2. Từ khóa
2.2.3. Tên gọi
2.2.4. Chú thích
2.2.5. Các kiểu dữ liệu cơ sở
2.2.6. Các đại lượng
2.2.7. Biểu thức
2.2.8. Cấu trúc chương trình

79
2.2.8. Cấu trúc chương trình
• Mỗi câu lệnh trong Python thường được tổ chức trên 1 dòng và trình thông dịch sẽ đọc và thực hiện
từng câu lệnh.
• Mỗi câu lệnh sẽ được xác định kết thúc thông qua dòng mới (enter).
• Nếu có nhiều lệnh trên 1 dòng → dùng dấu chấm phẩy ;
Ví dụ: print(x); print(y); print(z)
• Nếu 1 lệnh ở trên nhiều dòng: Python hỗ trợ 2 cách viết
– Cách 1: Lệnh nối tiếp ngầm định (explicit), ─ Cách 2: Lệnh nối tiếp rõ
khi có các cặp dấu (),{ },[ ] ràng (implicit) bằng cách sử
─ Ví dụ: dụng dấu \
if (
A=[ ─ Ví dụ:
person_1 >= 18 and
[1,2,3],
person_2 >= 18 and s = 1 + 2 + 3 + \
[3,4,5]
person_3 < 18 4 + 5 + 6 + \
]
): 7 + 8 + 9
print(A)
print('2 Persons should have ID Cards')
80
2.2.8. Cấu trúc chương trình
• Gồm 3 phần chính như sau:

import <tên thư viện/module> # Khai báo sử dụng thư viện hoặc module

# Định nghĩa các hàm
def <tên_hàm> ([danh sách tham số])
…… # Cấu trúc giống với thân chương trình chính
# Phần thân chương trình chính
<Câu lệnh 1> # Các câu lệnh được canh lề trái
# Khối lệnh 1.1 lùi vào 1 Tab/khoảng trống so với câu lệnh 1
[<Khối lệnh 1.1>]
<Câu lệnh 2> # Các câu lệnh được canh lề trái
# Khối lệnh 2.1 lùi vào 1 Tab/ khoảng trống so với câu lệnh 2
[Khối lệnh 2.1]

81
2.2.8. Cấu trúc chương trình
• Trong đó:
– <tên thư viện/tên module>: là tên thư viện hoặc module người dùng có sử dụng các
hàm, lớp để phục vụ các công việc trong chương trình, như thư viện/ module math

– <tên hàm>: là tên hàm (chương trình con) do người dùng định nghĩa

– <chương trình chính>: chứa các khối lệnh, thân chương trình chính

– Khoảng trống khối lệnh cần thụt vào so với lệnh chứa nó thông thường hay dùng một
khoảng Tab

82
2.2.8. Cấu trúc chương trình
• Nạp thư viện/module trong Python
– Nếu các tệp cùng thư mục: Cú pháp: import tên_tệp
– Nếu các tệp không cùng thư mục: 2 cách
• Cách 1: Dùng biến sys.path trong module sys
Cú pháp: import sys
sys.path.insert(0,đường_dẫn_thư_mục) hoặc
sys.path.append(đường_dẫn_thư _mục)
import tệp
• Cách 2: sử dụng biến môi trường PYTHONPATH thông qua cửa sổ Command Line
– Bước 1: Mở cửa sổ Command Line và thiết lập đường dẫn
set pythonpath=đường_dẫn_thư_mục
import sys
– Bước 2: Trong chương trình Python
import tên_tệp
83
2.2.8. Cấu trúc chương trình
• Nếu chỉ muốn sử dụng các hàm, các khai báo trong một tệp khác: 2 cách
– Cách 1: import cả tệp
Cú pháp: import tên_tệp # gọi thư viện/tệp
tên_tệp.tên_hàm() # sử dụng hàm trong thư viện/tệp
– Cách 2: import trực tiếp đối tượng trực tiếp từ tệp
Cú pháp: from tên_tệp import tên_hàm/đối_tượng
• Ví dụ:
a=3.2
import math
print(math.ceil(a))
hoặc
from math import ceil
print(ceil(a))
84
2.2.8. Cấu trúc chương trình

• Nếu muốn đặt lại tên cho tệp/module khi import


Cú pháp:
import tên_tệp as tên_mới
from tên_tệp import tên_hàm as tên_mới
• Ví dụ:
import math as TV_Toan
• Muốn liệt kê các hàm, các biến có trong 1 module/tệp:
Cú pháp: dir(tên_module)
• Ví dụ:
import(math)
dir(math)

85
2.2.8. Cấu trúc chương trình
Bài tập: Viết chương trình tính diện tích, chu vi hình tròn biết:
bán kính hình tròn = 1 + 2 + 3+ 4 + … + 10
Gợi ý:
Bán kính = n * (n + 1) /2 # n số phần tử trong biểu thức
Diện tích = Pi * Bán kính2
Chu_vi_HT = 2 * Pi * bán kính
Pi sử dụng module math

86
NỘI DUNG CHƯƠNG 2
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.2. Các yếu tố cơ bản của Python
2.3 Các lệnh cơ bản

87
2.3. Các lệnh cơ bản
2.3.1. Lệnh gán
2.3.2. Lệnh vào, ra dữ liệu
2.3.3. Các lệnh điều khiển rẽ nhánh
2.3.4. Các lệnh điều khiển chu trình

88
2.3. Các lệnh cơ bản
Giới thiệu
• Khái niệm: Lệnh là một chỉ thị yêu cầu máy thực hiện
• Phân loại:
– Câu lệnh đơn giản: là lệnh không chứa các lệnh khác. Ví dụ: phép gán, lời gọi hàm loại
void, lệnh nhảy không điều kiện goto
– Câu lệnh phức hợp/ ghép: khối lệnh, lệnh rẽ nhánh, lệnh lặp-chu trình
• Lưu ý
– Lệnh được ghi trên 1 dòng và kết thúc bằng dấu Enter. Nếu có nhiều lệnh trên cùng dòng
thì mỗi lệnh kết thúc bằng dấu chấm phẩy ;
– Nếu 1 lệnh kéo dài trên nhiều dòng thì dùng dấu \ để ghép lệnh
– Khối lệnh/ lệnh ghép dùng dấu hiệu thụt lề để xác định
– Khối lệnh/ các lệnh ngang hàng luôn thụt lề giống nhau

89
2.3.1. Lệnh gán
• Chức năng: gán 1 giá trị cho một biến
Cú pháp: tên_biến= giá trị
tên_biến = giá trị
• Ví dụ:
x = “Hello World”
a = 3.5
Li = [3, 5, 7]
Tu = (“apple”,”banana”, “grape”)
Se = {“Huyền”, 1990, 3.2}
Di = {“Name”:“Huyền”, “YOB”: 1990, “GPA”:3.2}
• Có thể gán nhiều giá trị cho nhiều biến
• Có thể gán một giá trị cho nhiều biến
90
2.3. Các lệnh cơ bản
2.3.1. Lệnh gán
2.3.2. Lệnh vào, ra dữ liệu
2.3.3. Các lệnh điều khiển rẽ nhánh
2.3.4. Các lệnh điều khiển chu trình

91
2.3.2. Lệnh vào ra dữ liệu – Hàm input()

• Chức năng: để nhập dữ liệu từ bàn phím vào cho biến


• Hoạt động: nhận giá trị nhập từ bàn phím cho đến khi gặp Enter và chuyển về
string.
• Cú pháp:
tên_biến = input((“Lời_thông báo”])
tên_biến=input((“Lời_thông báo”])
Ví dụ: name = input(“Enter your name:”)

• Lưu ý: để nhập đúng kiểu số, cần ép kiểu


– Ví dụ: n = int(input(“Nhap so Nguyen:”))
– Với các phiên bản cũ 2.x trở về trước có thêm hàm raw_input()

92
2.3.2. Lệnh vào ra dữ liệu – Hàm input()
• Có thể nhập dữ liệu cho nhiều biến trong cùng 1 lệnh: dùng phương thức split
hoặc khả năng của List.
• Cách 1: dùng phương thức split(): input().split(separator,maxsplit)
Trong đó:
– separator xác định ký tự phân tách xâu nhập vào, mặc định là khoảng trắng
– Maxsplit xác định bao nhiêu lần tách được thực hiện, mặc định là -1 tương ứng với số lần xuất hiện
dấu phân tách.
• Ví dụ:
x,y,z=input().split() # nhập dữ liệu cho 3 biến và phân tách bằng khoảng trắng
a,b=input().split(“;”) # nhập dữ liệu cho 2 biến cách nhau bởi dấu ;
a,b,c=input().split(“,”,2)# nhập dữ liệu cho 3 biến phân tách nhau bằng dấu phẩy và
tách bởi 2 lần ( tương ứng 3 biến)

93
2.3.2. Lệnh vào ra dữ liệu – Hàm input()

• Cách 2 dùng khả năng của list


# taking two input at a time
x, y = [int(x) for x in input("Enter two values: ").split()]
print("First Number is: ", x)
print("Second Number is: ", y)
print()

# taking three input at a time


x, y, z = [int(x) for x in input("Enter three values: ").split()]
print("First Number is: ", x)
print("Second Number is: ", y)
print("Third Number is: ", z)
print()

# taking two inputs at a time


x, y = [int(x) for x in input("Enter two values: ").split()]
print("First number is {} and second number is {}".format(x, y))
print()

94
2.3.2. Lệnh vào ra dữ liệu – Hàm print()

• Chức năng: xuất dữ liệu ra màn hình


• Cú pháp: print(values,sep=‘ ’, end=‘\n’)
print(values,sep=‘ ’, end=‘\n’)

• Trong đó:
– values: các giá trị xâu ký tự hoặc biến cần in giá trị ra màn hình.
– sep: xác định cách tách các đối tượng khi có nhiều giá trị cần in (mặc định là ‘ ’)
– end: xác định giá trị được in ở cuối dòng (mặc định là xuống dòng ‘\n’)
• Ví dụ 1: a=5; print(a)
print(“ngon ngu lap trinh Python”)

95
2.3.2. Lệnh vào ra dữ liệu – Hàm print()

• Ví dụ 2 (lệnh vào ra dữ liệu): Để xuất nhiều thông tin trong cùng một câu
lệnh, dùng dấu “,” để ngăn cách.
a=5; b=7
print("gia tri cua a va b la:")
print(a, b,sep=',', end='\n')

96
2.3. Các lệnh cơ bản
2.3.1. Lệnh gán
2.3.2. Lệnh vào, ra dữ liệu
2.3.3. Các lệnh điều khiển rẽ nhánh
2.3.4. Các lệnh điều khiển chu trình

97
2.3.3. Lệnh điều khiển rẽ nhánh If
• Chức năng: cho phép thực hiện các công việc khác nhau tương ứng với các điều kiện khác
nhau.
• Cú pháp: False
if điều_kiện: <Điều kiện>
Khối_lệnh1
else: True
Khối_lệnh2 <khối lệnh 2>
<khối lệnh 1>

• Trong đó:
– <Điều kiện>: Luôn cho kết quả trả về là một trong hai giá trị đúng (True hoặc False)
– <khối lệnh 1>: là khối lệnh được chạy khi biểu thức lô-gic có giá trị đúng, các câu lệnh trong khối
lệnh có lề trái dịch sang phải một khoảng trống so với câu lệnh if
– <khối lệnh 2>: là khối lệnh được chạy khi biểu thức lô-gic có giá trị sai, các câu lệnh trong khối có
lề trái thụt vào một khoảng trống so với câu lệnh else
98
2.3.3. Lệnh điều khiển rẽ nhánh If

• Cú pháp: if elif
if điều_kiện1:
Khối_lệnh1
elif điều_kiện2:
Khối_lệnh2

else:
Khối_lệnh n+1
• Trong đó:

– <Điều kiện 1, 2, ...n>: biểu thức logic cho kết quả True hoặc False
– <Khối lệnh 1, 2, .., n]: Khối lệnh được chạy sau khi biểu thức logic tương ứng 1, 2, … n có giá trị
True, các lệnh trong khối có lề trái dịch sang phải 1 khoảng trống so với câu lệnh if hoặc elif
– <Khối lệnh n+1>: là khối lệnh được chạy khi tất cả biểu thức logic từ 1 đến n có giá trị False.
99
2.3.3. Lệnh điều khiển rẽ nhánh If
Ví dụ: Cho hai số a và b
a = 15; b = 50
if b > a:
print("b is greater than a")
elif a == b:
print("a and b are equal")
else:
print("a is greater than b")

100
2.3.3. Lệnh điều khiển rẽ nhánh If
Lưu ý:
• Nếu sử dụng if khuyết thì khối lệnh có thể viết trên 1 dòng thông qua dấu
chấm phẩy
a=7
b=2
if a>b: print("ket luan"); print(a, "lon hơn",b)
• Nếu chỉ có 1 công việc cần thực hiện thì có thể dùng cú pháp if… else rút
gọn trên cùng 1 dòng:
a = 2
b = 8
print("A") if a > b else print("B")

101
2.3.3. Lệnh điều khiển rẽ nhánh If
• Các câu lệnh trong khối lệnh của if, else, elif phải tương ứng thụt lề như
nhau. (do python dựa vào thụt lề để xác định phạm vi trong code, các ngôn
ngữ khác thường dùng { })
a = 15
b = 50
if b > a:
print("b is greater than a") # you will get an error
• Nếu câu lệnh if rỗng (không có nội dung) thì dùng câu lệnh pass.
if b > a:
pass
• Câu lệnh If có thể lồng nhau
• Lưu ý: Không có câu lệnh switch … case trong Python
102
BÀI TẬP
Bài tập: Nhập vào ba số a, b, c. In ra thông báo xem ba số
đó có là ba cạnh của một tam giác hay không.

103
2.3. Các lệnh cơ bản
2.3.1. Lệnh gán
2.3.2. Lệnh vào, ra dữ liệu
2.3.3. Các lệnh điều khiển rẽ nhánh
2.3.4. Các lệnh điều khiển chu trình

104
2.3.4. Lệnh điều khiển chu trình for
• Chức năng: cho phép thực hiện lặp công việc với số lần lặp cho trước hoặc thực hiện công
việc trên các phần tử của 1 dãy (list, tuple, dictionary, set, string). (hơi khác so với câu lệnh
for trong các NN khác)
• Cú pháp:
for tên_biến
For tên_biến in range (số_lần_lăp): in range (số_lần_lăp):
Khối_lệnh_lặp
Khối_lệnh_lặp
• Ví dụ
for i in range (10): # in ra 0→9
print(i)
for i in range(4): # in 4 dòng, mỗi dòng 6 ngôi sao
print('*’*6)
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
105
2.3.4. Lệnh điều khiển chu trình for
• Để dừng vòng lặp for giữa chừng dùng câu lệnh break (so sánh 2 đoạn code sau)
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
if x == "banana":
break

fruits = ["apple", "banana", "cherry"]


for x in fruits:
if x == "banana":
break
print(x)
106
2.3.4. Lệnh điều khiển chu trình for
• Để bỏ qua lần lặp hiện tại và chuyển sang lần lặp kế tiếp sử dụng câu lệnh continue.
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
continue
print(x)
• Để thực hiện công việc sau khi kết thúc for dùng từ khóa else
for x in range(6):
print(x)
else:
print("Finally finished!")

107
2.3.4. Lệnh điều khiển chu trình for
• Python cho phép các câu lệnh for lồng nhau
adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]
for x in adj:
for y in fruits:
print(x, y)
• Nếu vòng lặp rỗng (không có nội dung), dùng câu lệnh pass.
for x in [0, 1, 2]:
pass

108
BÀI TẬP
In ra số Fibonacci thứ n với n là số nguyên dương bất kỳ. Biết
Fibonacci là 1 dãy số vô hạn, được bắt đầu bởi số 0 và số 1, các số
tiếp theo luôn bằng tổng của 2 số liền trước cộng lại.
Fn = Fn-1 + Fn-2
F0 = 0 và F1 = 1.
Gợi ý:
Dãy Fibonacci 0 1 1 2 3 5 8 13 21
Số thứ tự 1 2 3 4 5 6 7 8 9

109
NỘI DUNG CHƯƠNG 2
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.2. Các yếu tố cơ bản của Python
2.3 Các lệnh cơ bản

110
2.3. Các lệnh cơ bản
2.3.1. Lệnh gán
2.3.2. Lệnh vào, ra dữ liệu
2.3.3. Các lệnh điều khiển rẽ nhánh
2.3.4. Các lệnh điều khiển chu trình

111
2.3.4. Lệnh điều khiển chu trình while
• Chức năng: cho phép thực hiện lặp tập hợp các câu lệnh trong khi
điều kiện đúng. (không biết trước số lần lặp)
• Cú pháp:
while điều_kiện: while điều_kiện:
Khối_lệnh_lặp Khối_lệnh_lặp
• Ví dụ:
1. i = 1
2. while i < 6:
3. print(i)
4. i += 1

112
2.3.4. Lệnh điều khiển chu trình while
Lưu ý:
• Cần thay đổi giá trị biến điều khiển →tránh • Để dừng vòng lặp hiện tại và chuyển
vòng lặp vô hạn sang lần lặp kế tiếp dùng câu lệnh
i=0 continue
while i<10: i =1
print(i) while i<6:
• Để dừng vòng lặp giữa chừng dùng câu lệnh if i ==3:
break. i += 1
i = 1 continue
while i < 6: print(i)
i += 1
print(i)
if i == 3:
break
i += 1
113
2.3.4. Lệnh điều khiển chu trình while
• Để thực hiện công việc khi điều kiện sai (kết thúc vòng lặp while) dùng câu
lệnh else.
i = 1
while i < 6:
print(i)
i += 1
else:
print(“ i bang 6")
• Nếu vòng lặp while rỗng (không có nội dung) dùng câu lệnh pass
a = ‘programing with Python'
i = 0
while i < len(a):
i += 1
pass

print('Value of i :', i)
114
2.3.4. Lệnh điều khiển chu trình while
• Python cho phép while lồng nhau
i = 1
while i != 4:
j = 1
while j != 4:
print(i,j)
j += 1
i += 1

• Vòng lặp while với list


a = [1, 2, 3, 4]
while a:
print(a.pop())

115
2.3.4. Lệnh điều khiển chu trình while
• Xử lý ngoại lệ trong Python Try-except

Xét ví dụ:
x = 5
y = 0
print(x/y)
→ Nhận xét: Chương trình không thực thi do có lỗi do có ngoại lệ xảy ra

116
2.3.4. Lệnh điều khiển chu trình while
• Xử lý ngoại lệ trong Python Try-except:
– Khi lỗi ngoại lệ xảy ra thì chương trình sẽ ngừng thực thi.
– Python cung cấp cơ chế xử lý ngoại lệ bằng try – except, khi đó chương trình sẽ ngừng thực thi,
chuyển qua quá trình gọi và in ra lỗi đến khi nó được xử lý.
– Cú pháp: try:
# Khối lệnh thực thi
except ExceptionType
# Khối lệnh xử lý ngoại lệ loại type
except ExceptionType
# Khối lệnh xử lý ngoại lệ loại type
except:
Trong đó: # Xử lý tất cả các ngoại lệ còn lại
- try: có thể chứa các thao tác gây ra ngoại lệ. Có nhiều loại ngoại lệ khác nhau như ValueError,
TypeError, ZeroDivisionError, FileNotFoundError
- except: Khối lệnh chứa các thao tác xử lý ngoại lệ

117
2.3.4. Lệnh điều khiển chu trình while
• Xử lý ngoại lệ trong Python Try-except:
– Nếu muốn giải quyết nhiều ngoại lệ khác nhau thì sử dụng từ khóa Exception trong
except.
try:
# Khối lệnh thực thi
except Exception
# Khối lệnh xử lý ngoại lệ
finally:
# Khối lệnh sau khi khối lệnh try hoặc except kết thúc
– Trong đó:
• finally: Khối lệnh trong finally sẽ được thực hiện dù có hay không có ngoại lệ xảy ra.

118
2.3.4. Lệnh điều khiển chu trình while
• Xử lý ngoại lệ trong Python Try-except
Xét ví dụ:
try:
x = 5
y = 0
print(x/y)
except ZeroDivisionError:
print("Khong the chia cho so 0")
→ Nhận xét: Chương trình thực thi và không báo lỗi

119
BÀI TẬP
Bài tập: Hãy xây dựng chương trình để giải bài toán gửi tiền tiết
kiệm như sau:
Anh A có gửi số tiền a vào một ngân hàng với lãi suất hàng tháng là
5%. Hỏi sau bao nhiêu tháng anh thu được số tiền b (b>a).

120
NỘI DUNG CHƯƠNG 2
2.1. Giới thiệu về ngôn ngữ lập trình Python
2.2. Các yếu tố cơ bản của ngôn ngữ lập trình Python
2.3 Các lệnh cơ bản

121
TỔNG KẾT CHƯƠNG 2
• Tìm hiểu lịch sử phát triển Python
• Tìm hiểu 19 nguyên tắc lập trình Zen of python
• Hướng dẫn cài đặt Pycharm
• Tìm hiểu các yếu tố cơ bản của Python
• Tìm hiểu các lệnh cơ bản của Python

122
Giải thích thuật ngữ
Thuật ngữ Giải thích
Script language ngôn ngữ lập trình kịch bản
Dynamic language Ngôn ngữ động
Indentation Thụt lề
Curly brackets Dấu ngoặc nhọn
Zen of Python Bản tóm tắt nguyên tắc lập trình
complex Số phức
break Thoát khỏi vòng lặp
continue Bỏ qua 1 vòng lặp đến vòng lặp kế tiếp
pass Không thực hiện
Try-except Xử lý ngoại lệ

123
Câu hỏi ôn tập
1. Trình bày tóm tắt lịch sử phát triển của ngôn ngữ lập trình Python
2. Trình bày 19 nguyên tắc lập trình Zen of Python
3. Trình bày các bước cài đặt công cụ lập trình IDE Pycharm
4. Nêu các bước viết và biên dịch chương trình với Pycharm
5. Trình bày về 1 số yếu tố cơ bản của ngôn ngữ lập trình Python: Bảng chữ cái, từ khóa, tên gọi, chú
thích
6. Trình bày về 1 số yếu tố cơ bản của ngôn ngữ lập trình Python: Các kiểu dữ liệu cơ sở, các đại lượng
7. Trình bày về một số yếu tố cơ bản của ngôn ngữ lập trình Python: Biểu thức, Cấu trúc chương trình
8. Nêu cú pháp và giải thích lệnh gán trong Python
9. Nêu cú pháp và giải thích lệnh Lệnh vào, ra dữ liệu trong Python
10. Nêu cú pháp và giải thích lệnh Các lệnh điều khiển rẽ nhánh if trong Python
11. Nêu cú pháp và giải thích lệnh Các lệnh điều khiển chu trình while trong Python
12. Nêu cú pháp và giải thích lệnh Các lệnh điều khiển chu trình for trong Python

124
BÀI TẬP
Bài 1. Cho trước (hoặc nhập từ bàn phím) xâu ký tự str, in ra xâu thu được từ str bằng cách viết
theo thứ tự ngược lại
Bài 2. Cho trước 2 xâu str1, str2, viết chương trình trộn 2 xâu trên lại và in kết quả màn hình. Việc
trộn theo nguyên tắc như sau:
- Lần lượt từ trái qua phải, viết các ký tự str1, sau đó đến str2
- Lần lượt từ trái qua phải, viết ký tự str2 sau đó đến str1
Bài 3: Kiểm tra 1 số xem có phải là số hoàn hảo không? Biết số hoàn hảo là một số nguyên dương
lớn hơn 0 và có tổng các ước (ngoại trừ số đó) bằng chính nó.
Bài 4: In ra các số nguyên tố nhỏ hơn N
Bài 5: In ra số Fibonacci thứ n với n là số nguyên dương bất kỳ. Biết Fibonacci là 1 dãy số vô hạn,
được bắt đầu bởi số 0 và số 1, các số tiếp theo luôn bằng tổng của 2 số liền trước cộng lại.
Fn = Fn-1 + Fn-2
F0 = 0 và F1 = 1.

125
CÂU HỎI TRẮC NGHIỆM
Câu 1. Giá trị x sau khi thực hiện câu lệnh sau sẽ là gì?
x = 4 ** 2 – 4 * 4 == 0
A. True
B. False
C. Không là False cũng không là True
D. Chương trình báo lỗi

126
CÂU HỎI TRẮC NGHIỆM
Câu 2. Cho đoạn chương trình sau:
a = 5
b =7
x = a < b or a < 0 and b < 0
Giá trị của x là:
A. True
B. False
C. Chương trình báo lỗi
D. None

127
CÂU HỎI TRẮC NGHIỆM
Câu 3. Giá trị a và y là bao nhiêu sau khi thực hiện đoạn code sau:
a=1
y = a+1 * 2 + 16/a +3
y *= 2 +4
A. 132
B. 36
C. 50
D. 80

128
TRẮC NGHIỆM
Câu 4. Xác định tên biến nhớ hợp lệ
A. a-b-c
B. a_b_c
C. __abc__
D. –a_b_c-

129
CÂU HỎI TRẮC NGHIỆM
Câu 5. Giả sử có đoạn chương trình sau:
a = 5
b = 7
a, b = b, a
Sau các lệnh trên giá trị các biến nhớ a, b bằng bao nhiêu?
A. a = 5, b = 5
B. a =5, b = 7
C. a = 7, b = 7
D. a = 7, b =5

130

You might also like