Python cơ bản¶
Python Basics
Hello, World¶
# Chương trình đầu tiên: In ra màn hình câu "Hello, World!"
print("Hello, World!")
Thực thi chương trình Python¶
Chạy từng dòng lệnh¶
Các bước thực hiện:
- Mở cửa sổ chế độ dòng lệnh (terminal).
- Nhập
python(hoặcpython3) và nhấnEnterđể mở Python chế độ tương tác. - Nhập từng dòng lệnh để thực thi.
Ví dụ:
Chạy file mã nguồn từ chế độ dòng lệnh¶
- Mở cửa sổ dòng lệnh (terminal).
- Nhập
python <[path_to/]python_script_file_name.py>và nhấnEnterđể thực thi. Trình thông dịch sẽ lần lượt thực hiện các lệnh trong file mã nguồn.
Thực thi chương trình Python từ môi trường phát triển tích hợp (IDE)¶
- Mở IDE lập trình Python ưa thích (PyCharm, VS Code, Spyder, IDLE,...).
- Tạo (hoặc mở) file chương trình Python.
- Nhấn lệnh
Runđể thực thi chương trình.
Khối lệnh¶
- Python sử dụng khoảng canh lề (indentation) để giới hạn khối lệnh.
- Số khoảng trắng trước khối lệnh ít nhất là 1, thông dụng nhất là 4.
- Trong một khối lệnh, số khoảng trắng đứng trước mỗi dòng lệnh phải bằng nhau.
Ví dụ:
n = 123
if n % 2 == 0:
print("%d là số chẵn" % n)
else:
print("%d là số lẻ" % n)
Kiểu dữ liệu và biến¶
Biến¶
- Biến là đối tượng dùng để lưu dữ liệu.
- Giá trị của biến có thể thay đổi khi chương trình hoạt động.
-
Python không có lệnh khai báo biến, biến được tạo ra khi gán giá trị cho nó.
-
Tên biến đặt theo quy tắc sau:
- Tên biến chỉ gồm các ký tự chữ cái, chữ số và dấu gạch dưới '_'.
- Tên biến phải bắt đầu bằng chữ cái hoặc ký tự gạch dưới.
- Không được đặt tên biến trùng với từ khóa của Python.
Ví dụ:
-
Tên biến hợp lệ:
delta,x1,don_gia,_123abc -
Tên biến không hợp lệ:
3VanChinNghin: bắt đầu bằng chữ sốDon Gia: chứa khoảng trắngexcept: trùng với từ khóa của Python
Note
- Ngôn ngữ Python phân biệt chữ hoa chữ thường (case-sensitive), nên các tên sau là khác nhau:
TinHoc,Tinhoc,tinHoc. - Nên đặt tên biến ngắn gọn, có nghĩa (diễn tả nội dung nó chứa). Ví dụ, để viết lệnh tính quãng đường đi dựa vào vận tốc và thời gian, thay vì viết
d = v*t, nên viếtdistance = velocity * traveled_timehoặcquang_duong = van_toc * thoi_gian, sẽ giúp câu lệnh dễ hiểu hơn. - Với Python 3, có thể đặt tên biến bằng ký tự Unicode (gồm cả tiếng Việt), chẳng hạn:
Ba_Vạn_Chín_Nghìn = 39000là một khai báo hợp lệ. Tuy nhiên, chỉ nên đặt tên biến bằng các ký tự ASCII.
Kiểu dữ liệu¶
Kiểu dữ liệu của một biến được xác định khi gán giá trị cho nó.
Python có các kiểu dữ liệu cơ sở sau:
Kiểu chuỗi (text)¶
Chuỗi là dãy ký tự đặt trong cặp dấu nháy kép "" hoặc nháy đơn ''.
Ví dụ:
# Dạng chuỗi 1: đặt giữa cặp dấu nháy kép
ntu_slogan1 = "Lựa chọn đúng để thành công!"
print(ntu_slogan1)
# Dạng chuỗi 2: đặt giữa cặp dấu nháy đơn
ntu_slogan2 = 'Căng buồm tri thức vươn khơi.'
print(ntu_slogan2)
# Dạng chuỗi 3: chuỗi gồm nhiều dòng
verses = """
'Trải qua một cuộc bể dâu
Những điều trông thấy mà đau đớn lòng.'
\t\t- trích Truyện Kiều (Nguyễn Du)
"""
print(verses)
Kiểu số (numeric)¶
Python có các kiểu số nguyên (int), số thực (float) và số phức (complex).
Ví dụ:
# Kiểu số nguyên
n = 3721
print("n = %d" % n)
# Kiểu số thực
pi = 3.14159
print("PI = %.2f" % pi)
# Số phức
z = 3 + 5j
print("z = ", z)
Kiểu tuần tự (sequence)¶
- Kiểu danh sách (sequence): list, tuple, range
- Kiểu từ điển (mapping): dict
- Kiểu tập hợp (set): set, frozenset
Kiểu Boolean: bool¶
Kiểu bool có giá trị True hoặc False.
Ví dụ:
fruits = {'bưởi', 'táo', 'đu đủ', 'cam'}
is_apple_in_fruits = 'táo' in fruits
print(is_apple_in_fruits)
is_durian_in_fruits = 'durian' in fruits
print(is_durian_in_fruits)
Kiểu None (NoneType)¶
Kiểu dữ liệu None dùng để chỉ một biến hoặc đối tượng không có giá trị.
Note
Dùng hàm type() để lấy kiểu dữ liệu của một biến hoặc biểu thức.
Ví dụ:
n = 3721
print("Kiểu dữ liệu là ", type(n).__name__)
PI = 3.1416
print("Kiểu dữ liệu là ", type(PI).__name__)
four_seasons = ['Xuân', 'Hạ', 'Thu', 'Đông']
print("Kiểu dữ liệu là ", type(four_seasons).__name__)
fruits = {"bưởi", "táo", "cam", "chanh"}
print("Kiểu dữ liệu là ", type(fruits).__name__)
student_info = {'ID':'65131234', 'grades':{'python':8.5, 'maths':7.8}}
print("Kiểu dữ liệu là ", type(student_info).__name__)
numbers = (3,7,2,1)
print("Kiểu dữ liệu là ", type(numbers).__name__)
greeting_message = 'Welcome to Nha Trang!'
print("Kiểu dữ liệu là ", type(greeting_message).__name__)
Các câu lệnh điều khiển¶
Lệnh rẽ nhánh if¶
Dạng 1: Lệnh if thiếu¶
- Nếu
<BT logic>có giá trị đúng (True) thì thực hiện<Lệnh đơn>hoặc<Khối lệnh>
if <BT logic>: <Lệnh đơn>
hoặc
if <BT logic>:
<Khối lệnh>
Ví dụ:
n = 5
if n % 2 != 0: print(f'{n} là số lẻ.')
m = 69
if m > 0:
print(f'm = {m}')
print(f'{m} là số dương.')
Dạng 2: Lệnh if đủ¶
- Nếu
<BT logic>có giá trị đúng (True) thì thực hiện<Khối lệnh 1>, ngược lại thực hiện<Khối lệnh 2>
if <BT logic>:
<Khối lệnh 1>
else:
<Khối lệnh 2>
Hoặc viết gọn hơn khi chỉ có lệnh đơn:
<Lệnh 1> if <BT logic> else <Lệnh 2>
Ví dụ:
n = 5
if n % 2 != 0:
print(f'{n} là số lẻ.')
else:
print(f'{n} là số chẵn.')
a, b = 6, 9
print(f'{a} > {b}') if a > b else print(f'{b} > {a}')
elif¶
- Trong lệnh if, muốn kiểm tra điều kiện mới khi điều kiện trước không thỏa mãn thì dùng từ khóa
elif
if <BT logic 1>:
<Khối lệnh 1>
elif <BT logic 2>:
<Khối lệnh 2>
...
elif <BT logic n>:
<Khối lệnh n>
else:
<Khối lệnh n+1>
Lệnh lặp¶
Lệnh lặp while¶
- Lệnh lặp
whilelặp lại khối lệnh chừng nàoBT điều kiệncòn đúng.
while <BT điều kiện>:
<Khối lệnh>
Ví dụ: Tính tổng các chữ số của số tự nhiên n:
n = 123
sum_digits = 0
while n > 0:
sum_digits += n % 10
n = n // 10
print(f'Tổng chữ số = {sum_digits}')
Lệnh break¶
- Lệnh `break' khi được gọi sẽ dừng vòng lặp.
- Trong ví dụ sau, dù điều kiện lặp là
i < 100, nhưng nếu i bằng 5 thì dừng vòng lặp, nên chương trình chỉ in ra các số nguyên liên tiếp từ 1 đến 4.
i = 1
while i < 100:
print(i, end= ' ')
i += 1
if i == 5: break
Lệnh continue¶
- Lệnh `continue' khi được gọi sẽ chuyển sang vòng lặp kế tiếp.
- Trong ví dụ sau, biến i khởi đầu bằng 0, chừng nào i còn thỏa
< 10thì tăng i thêm 1 và in ra giá trị của i, nhưng nếu i là số chẵn thì lệnhcontinueđược gọi, chương trình chuyển sang xử lý bước lặp tiếp theo mà bỏ qua lệnhprint(i, end=' '). Kết quả là chương trình chỉ in ra các số lẻ từ 1 đến 9.
i = 0
while i < 10:
i += 1
if i % 2 == 0: continue
print(i, end= ' ')
Lệnh lặp for¶
- Lệnh lặp
fordùng để duyệt từng phần tử trong một dãy (list, tuple, dictionary, set, string).
Duyệt danh sách¶
- Cú pháp
for <biến chạy> in <danh sách>:
<Khối lệnh>
- Ví dụ
Tứ_Linh = ['Long', 'Ly', 'Quy', 'Phượng']
# Cách 1: duyệt từng phần tử của danh sách
for tl in Tứ_Linh:
print(tl, end=' ')
# Cách 2: duyệt từng phần tử thông qua vị trí trong danh sách
for i in range(len(Tứ_Linh)):
print(Tứ_Linh[i], end=' ')
Duyệt chuỗi ký tự¶
- Chuỗi là một dãy ký tự vì thế có thể duyệt từng ký tự của chuỗi bằng lệnh for.
- Cú pháp
for ch in <chuỗi>:
<Lệnh>
- Ví dụ
st = 'Nha Trang Khánh Hòa'
for ch in st:
print(ch)
Hàm range()¶
- hàm
range(<start_value>, <end_value>, <step>)thường được kết hợp khi muốn thực hiện lệnh lặp với số bước lặp xác định. - Ví dụ: In 10 dòng 'Hello world'
for i in range(10): # range(0, 10, 1)
print('Hello world')
Lệnh lặp lồng nhau (nested loop)¶
- Lệnh lặp lồng nhau: Trong một lệnh lặp chứa lệnh lặp khác.
- Với mỗi bước lặp của vòng lặp ngoài, lệnh lặp bên trong sẽ thực hiện hết một lượt.
- Ví dụ: In bảng cửu chương
for i in range(2, 10):
for j in range(1, 11):
print('%3d x %3d = %3d' % (i, j, i*j))
Hàm Python¶
- Hàm là một đoạn mã lệnh được lập trình để thực hiện một chức năng chuyên biệt.
- Một hàm có tên gọi, đầu vào và đầu ra.
- Hàm chỉ thực thi khi nó được gọi.
- Một hàm có thể được gọi nhiều lần với các giá trị khác nhau của đối số.
Ví dụ:
def say_hi():
"""
In ra câu chào "Hi there!"
"""
print("Hi there!")
# Gọi hàm
say_hi()
Hàm say_hi() ở trên không có đầu vào, không trả về giá trị cho lời gọi hàm; khi gọi hàm, máy tính sẽ thực thi các lệnh trong thân hàm, ở đây là lệnh print("Hi there!").
Truyền đối số cho hàm¶
- Hàm có thể nhận các giá trị đầu vào để xử lý, gọi là tham số. Các tham số cách nhau dấy phẩy.
Ví dụ: Sửa lại hàm say_hi() ở trên để khi gọi hàm và truyền cho nó một chuỗi chứa tên bất kỳ thì máy tính sẽ in ra câu chào tên đó.
def say_hi(name):
"""
Hàm in ra câu chào tên trong chuỗi được truyền vào
"""
print("Hello %s" % name.title())
# Gọi hàm với các đối số khác nhau
say_hi("Nhâm Thìn")
say_hi("Cristiano Ronaldo")
st = "Việt Nam"
say_hi(st)
Một số hàm dựng sẵn của Python¶
Trình thông dịch Python cung cấp nhiều hàm dựng sẵn (built-in functions). Sau đây là một số hàm thông dụng.
Nhóm hàm toán học¶
| Tên hàm | Mô tả |
|---|---|
| abs() | Tính giá trị tuyệt đối của một số |
| max() | Tìm số lớn nhất trong các đối số hoặc trong danh sách |
| min() | Tìm số nhỏ nhất trong các đối số hoặc trong danh sách |
| pow() | Tính lũy thừa |
| round() | Làm tròn số thập phân |
| sum() | Tính tổng các giá trị trong danh sách |
Nhóm hàm xử lý với kiểu dữ liệu cơ sở¶
| Hàm | Mô tả |
|---|---|
| int() | Đổi một chuỗi hoặc số sang số nguyên |
| bin() | Đổi số nguyên sang hệ nhị phân |
| hex() | Đổi số nguyên sang hệ hexa |
| float() | Đối chuỗi hoặc số sang số thực |
| str() | Chuyển đối tượng thành kiểu chuỗi |
| ord() | Trả về mã Unicode của ký tự |
| chr() | Trả về ký tự ứng với mã Unicode |
dict(), set(), list(), tuple()¶
Trả về kiểu từ điển, tập hợp, danh sách
|