Cú pháp cơ bản trong Python

Python Tutorial | by Hoc Python

Khi bắt đầu học bất kỳ ngôn ngữ nào, dù là ngôn ngữ tự nhiên hay ngôn ngữ lập trình, việc nắm vững "ngữ pháp" hay cú pháp là điều kiện tiên quyết để giao tiếp hiệu quả. Python, với triết lý thiết kế hướng đến sự đơn giản và dễ đọc, cung cấp một cú pháp trực quan, thân thiện cho cả những người mới bắt đầu lập trình. Bài này sẽ giới thiệu tổng quan về tầm quan trọng của cú pháp trong Python và những đặc điểm nổi bật giúp ngôn ngữ này trở nên dễ học, dễ viết, đặt nền tảng vững chắc tìm kiếm lập trình của bạn.

Các thành phần cơ bản của cú pháp Python

Để viết được các chương trình Python có ý nghĩa, bạn cần nắm vững những thành phần cơ bản nhất của cú pháp. Chúng giống như những viên gạch xây nên ngôi nhà lập trình của bạn.

Lời chú thích (Comments) #

  • Mục đích: Lời chú thích là những đoạn văn bản trong mã nguồn mà Python sẽ bỏ qua hoàn toàn khi chạy chương trình. Chúng không ảnh hưởng đến hoạt động của chương trình mà chỉ có một mục đích duy nhất: giúp lập trình viên giải thích code của mình. Điều này cực kỳ quan trọng để bạn (hoặc người khác) có thể hiểu lại mã sau này, đặc biệt là với những đoạn code phức tạp.

Cách dùng:

  • Cho một dòng: Dùng dấu thăng (#) ở đầu dòng hoặc sau một dòng code. Mọi thứ sau dấu # trên cùng một dòng sẽ là chú thích.

  • Cho nhiều dòng (Multi-line comments): Bạn có thể dùng ba dấu nháy kép """ """ hoặc ba dấu nháy đơn ''' ''' để tạo khối chú thích nhiều dòng. Mọi thứ bên trong cặp dấu này sẽ được coi là chú thích.

Ví dụ cơ bản:

# Đây là một lời chú thích một dòng.
# Nó giúp giải thích đoạn code bên dưới.

print("Hello, Python!") # Chú thích ngay trên cùng một dòng với code

"""
Đây là một lời chú thích
trên nhiều dòng.
Nó thường dùng để mô tả chức năng của một phần code lớn.
"""
'''
Bạn cũng có thể sử dụng ba dấu nháy đơn
cho chú thích đa dòng.
'''

Biến (Variables) =

  • Mục đích: Biến là những "chiếc hộp" dùng để lưu trữ dữ liệu trong chương trình của bạn. Mỗi chiếc hộp có một cái tên (tên biến) và có thể chứa một giá trị nào đó. Giá trị này có thể thay đổi trong quá trình chạy chương trình.

Cách đặt tên:

  • Tên biến phải bắt đầu bằng một chữ cái (a-z, A-Z) hoặc dấu gạch dưới (_).

  • Không được bắt đầu bằng số.

  • Chỉ có thể chứa các chữ cái, số và dấu gạch dưới.

  • Phân biệt chữ hoa/thường: tenTen là hai biến khác nhau.

  • Không dùng từ khóa: Tránh dùng các từ khóa dành riêng cho Python (ví dụ: if, for, print).

  • Quy ước tốt: Nên đặt tên biến dễ hiểu, có ý nghĩa và thường dùng chữ thường với dấu gạch dưới để tách các từ (ví dụ: ten_nguoi_dung).

Cách gán giá trị: Dùng dấu bằng (=) để gán một giá trị cho biến.

Ví dụ cơ bản:

# Các tên biến hợp lệ
ten = "Alice"
_tuoi = 30
so_luong_san_pham = 100
gpa2024 = 3.5

# Các tên biến không hợp lệ (sẽ gây lỗi)
# 10diem = 10     # Bắt đầu bằng số
# ten-san-pham = "Áo" # Chứa dấu gạch ngang
# if = True      # Là từ khóa của Python

# Gán lại giá trị cho biến
diem = 9
print(diem) # Output: 9
diem = 10   # Giá trị của biến 'diem' được thay đổi
print(diem) # Output: 10

Kiểu dữ liệu (Data Types) cơ bản

Python tự động nhận diện kiểu dữ liệu của biến dựa trên giá trị bạn gán cho nó. Dưới đây là các kiểu dữ liệu cơ bản bạn sẽ thường xuyên gặp:

Số (Numbers): Dùng để biểu diễn các giá trị số.

  • Số nguyên (Integers - int): Là các số nguyên không có phần thập phân (ví dụ: -5, 0, 100).

so_nguyen = 42
print(type(so_nguyen)) # Output: <class 'int'>

Số thực (Floating-point numbers - float): Là các số có phần thập phân (ví dụ: 3.14, -0.5, 2.0).

pi = 3.14159
nhiet_do = 25.5
print(type(nhiet_do)) # Output: <class 'float'>

Chuỗi ký tự (Strings - str): Dùng để lưu trữ văn bản.

Mục đích: Biểu diễn các đoạn văn bản, tên, địa chỉ, v.v.

Cách dùng: Các chuỗi ký tự được đặt trong dấu ngoặc kép ("") hoặc dấu ngoặc đơn ('').

Nối chuỗi: Bạn có thể nối nhiều chuỗi lại với nhau bằng toán tử +.

Ví dụ:

ten_hoc_sinh = "Nguyen Van A"
loi_chao = 'Xin chào'
thong_tin = ten_hoc_sinh + " có số điểm là 9.5" # Nối chuỗi
print(thong_tin) # Output: Nguyen Van A có số điểm là 9.5
print(type(loi_chao)) # Output: <class 'str'>

Giá trị Boolean (bool): Dùng để biểu thị trạng thái đúng hoặc sai.

Mục đích: Thường được dùng trong các câu lệnh điều kiện để kiểm tra một trạng thái nào đó.

Chỉ có hai giá trị: True (Đúng) và False (Sai). Lưu ý: Chữ cái đầu tiên phải viết hoa.

Ví dụ:

co_mua = True
het_tien = False
print(type(co_mua)) # Output: <class 'bool'>

Các phép toán (Operators)

Python cung cấp nhiều loại phép toán để thực hiện các thao tác khác nhau trên dữ liệu.

Phép toán số học: Dùng cho các phép tính toán học cơ bản.

  • + (Cộng), - (Trừ), * (Nhân), / (Chia, kết quả luôn là số thực).

  • // (Chia lấy phần nguyên): Chỉ lấy phần nguyên của kết quả chia.

  • % (Chia lấy dư - Modulo): Trả về số dư của phép chia.

  • ** (Lũy thừa): Nâng một số lên một số mũ.

  • Ví dụ:

a = 10
b = 3
print(a + b)  # Output: 13
print(a - b)  # Output: 7
print(a * b)  # Output: 30
print(a / b)  # Output: 3.3333333333333335 (luôn là float)
print(a // b) # Output: 3 (phần nguyên)
print(a % b)  # Output: 1 (số dư)
print(a ** b) # Output: 1000 (10 mũ 3)

Phép toán so sánh: Dùng để so sánh hai giá trị và luôn trả về kết quả là True hoặc False.

  • == (Bằng với)

  • != (Khác với)

  • > (Lớn hơn)

  • < (Nhỏ hơn)

  • >= (Lớn hơn hoặc bằng)

  • <= (Nhỏ hơn hoặc bằng)

Ví dụ:

x = 5
y = 10
print(x == y) # Output: False
print(x != y) # Output: True
print(x < y)  # Output: True
print(x >= y) # Output: False

Phép toán logic: Dùng để kết hợp hoặc đảo ngược các điều kiện Boolean.

  • and: Trả về True nếu cả hai điều kiện đều True.

  • or: Trả về True nếu một trong hai điều kiện là True.

  • not: Đảo ngược giá trị Boolean (nếu True thành False, nếu False thành True).

Ví dụ:

diem = 8
gioi_tinh = "Nam"

# Sử dụng 'and'
if diem >= 7 and gioi_tinh == "Nam":
    print("Đạt điểm giỏi và là nam.") # Output: Đạt điểm giỏi và là nam.

# Sử dụng 'or'
if diem >= 9 or gioi_tinh == "Nữ":
    print("Điểm rất cao hoặc là nữ.") # Output: Điểm rất cao hoặc là nữ.

# Sử dụng 'not'
co_nang = True
print(not co_nang) # Output: False

Hàm print()

  • Mục đích: Hàm print() là một trong những hàm quan trọng và được sử dụng nhiều nhất trong Python. Mục đích của nó là hiển thị (in) thông tin ra màn hình console (cửa sổ Command Prompt/Terminal). Đây là cách chính để bạn xem kết quả chương trình của mình.

  • Cách dùng cơ bản: Đặt bất kỳ thứ gì bạn muốn in bên trong dấu ngoặc đơn ().

  • Ví dụ:

print("Chào bạn!") # In ra một chuỗi văn bản
print(123)        # In ra một số nguyên
ten = "Binh"
print("Tên của tôi là:", ten) # In nhiều thứ cách nhau bởi dấu phẩy
print(10 + 5)     # In kết quả của một phép toán

Hàm input()

Mục đích: Hàm input() dùng để nhận dữ liệu từ người dùng thông qua bàn phím. Khi hàm này được gọi, chương trình sẽ tạm dừng và chờ người dùng gõ gì đó rồi nhấn Enter.

Cách dùng cơ bản:

  • Bạn có thể cung cấp một chuỗi (prompt) bên trong dấu ngoặc đơn để hiển thị cho người dùng biết họ cần nhập gì.

  • Lưu ý: Hàm input() luôn trả về giá trị dưới dạng chuỗi ký tự (string), ngay cả khi người dùng nhập số. Nếu bạn muốn làm việc với số, bạn cần chuyển đổi nó (ví dụ: dùng int() hoặc float()).Ví dụ:

ten_cua_ban = input("Nhập tên của bạn: ")
print("Xin chào, " + ten_cua_ban + "!")

# Ví dụ với số (cần chuyển đổi)
nam_sinh = input("Bạn sinh năm bao nhiêu? ")
# Chuyển đổi chuỗi thành số nguyên để có thể thực hiện phép toán
nam_sinh_so = int(nam_sinh)
tuoi = 2025 - nam_sinh_so # Giả sử năm hiện tại là 2025
print("Bạn khoảng", tuoi, "tuổi.")

Thụt lề (Indentation)

Mục đích: Đây là một trong những quy tắc cú pháp quan trọng nhất và là đặc điểm nhận dạng của Python. Thụt lề không chỉ là để mã trông đẹp hơn mà nó còn được Python sử dụng để xác định các khối code (blocks of code). Điều này có nghĩa là, tất cả các dòng mã thuộc về cùng một khối (ví dụ: các lệnh bên trong một câu điều kiện if, một vòng lặp for, hoặc một hàm) phải có cùng mức thụt lề.

Quy ước: Thông thường, một mức thụt lề là 4 dấu cách (spaces). Bạn cũng có thể dùng phím Tab, nhưng hãy cẩn thận không trộn lẫn tab và dấu cách trong cùng một file để tránh lỗi.

Ví dụ về khối code đơn giản:

diem = 9
if diem >= 8: # Đây là dòng bắt đầu một khối code
    print("Bạn đạt điểm Giỏi.") # Dòng này thụt lề 4 dấu cách
    print("Chúc mừng!")       # Dòng này cũng thụt lề 4 dấu cách, thuộc cùng khối if
else: # Đây là dòng bắt đầu một khối code khác
    print("Bạn cần cố gắng thêm.") # Dòng này thụt lề 4 dấu cách, thuộc khối else
print("Kết thúc chương trình.") # Dòng này không thụt lề, không thuộc if/else

# Ví dụ với vòng lặp for
for i in range(3): # range(3) sẽ tạo ra các số 0, 1, 2
    print(f"Lần lặp thứ {i + 1}") # Dòng này thụt lề, thuộc khối for
print("Vòng lặp đã kết thúc.") # Dòng này không thụt lề

Nếu bạn không thụt lề đúng cách, Python sẽ báo lỗi IndentationError.

Cấu trúc điều khiển dòng chảy (Control Flow - Giới thiệu) trong Python

Trong lập trình, cấu trúc điều khiển dòng chảy (Control Flow) là cách bạn hướng dẫn chương trình của mình thực hiện các lệnh theo một thứ tự nhất định, hoặc thực hiện lặp đi lặp lại một khối lệnh nào đó dựa trên các điều kiện. Đây là xương sống giúp chương trình của bạn "suy nghĩ" và "hành động" một cách thông minh.

Câu lệnh điều kiện if/elif/else

Mục đích: Các câu lệnh điều kiện cho phép chương trình của bạn ra quyết định và thực thi các khối mã khác nhau dựa trên việc một điều kiện nào đó là True (đúng) hay False (sai).

Cách dùng:

  • if (Nếu): Nếu một điều kiện là đúng, thực hiện khối lệnh này.

  • elif (Nếu không thì nếu): Viết tắt của "else if". Nếu điều kiện if trước đó sai, thì kiểm tra điều kiện elif này.

  • else (Nếu không thì): Nếu tất cả các điều kiện ifelif trước đó đều sai, thì thực hiện khối lệnh này.

Ví dụ đơn giản:

diem = 7.5

if diem >= 8:
    print("Bạn đạt loại Giỏi.")
elif diem >= 6.5: # Điều kiện này chỉ được kiểm tra nếu diem < 8
    print("Bạn đạt loại Khá.")
else: # Khối này chạy nếu diem < 6.5
    print("Bạn cần cố gắng thêm.")
# Output: Bạn đạt loại Khá.

thoi_tiet = "nang"
if thoi_tiet == "mua":
    print("Mang ô đi học.")
elif thoi_tiet == "nang":
    print("Đội mũ khi ra ngoài.")
else:
    print("Thời tiết bình thường.")
# Output: Đội mũ khi ra ngoài.

Lưu ý việc thụt lề để xác định các khối lệnh của if, elif, và else.

Vòng lặp for (Duyệt qua các phần tử)

Mục đích: Vòng lặp for được sử dụng để lặp lại một khối mã một số lần nhất định, thường là để duyệt qua từng phần tử trong một chuỗi (như chuỗi ký tự, danh sách) hoặc một dãy số.

Cách dùng: Vòng lặp for thường hoạt động với hàm range() để tạo ra một dãy số, hoặc trực tiếp duyệt qua các phần tử của một tập hợp.

Ví dụ đơn giản:

# Lặp lại 5 lần bằng cách dùng range()
for i in range(5): # range(5) tạo ra dãy số từ 0 đến 4
    print(f"Lần lặp thứ {i + 1}")
# Output:
# Lần lặp thứ 1
# Lần lặp thứ 2
# Lần lặp thứ 3
# Lần lặp thứ 4
# Lần lặp thứ 5

# Duyệt qua các ký tự trong một chuỗi
ten_ban = "Python"
for ky_tu in ten_ban:
    print(f"Ký tự: {ky_tu}")
# Output:
# Ký tự: P
# Ký tự: y
# Ký tự: t
# Ký tự: h
# Ký tự: o
# Ký tự: n

Vòng lặp while (Lặp khi điều kiện còn đúng)

Mục đích: Vòng lặp while được sử dụng để lặp lại một khối mã chừng nào một điều kiện nào đó vẫn còn đúng (True). Vòng lặp này sẽ tiếp tục chạy cho đến khi điều kiện trở thành False.

Cách dùng: Bạn cần đảm bảo rằng có một điểm nào đó trong vòng lặp làm thay đổi điều kiện, nếu không vòng lặp sẽ chạy mãi mãi (gọi là vòng lặp vô hạn - infinite loop).

Ví dụ đơn giản:

dem = 1
while dem <= 3: # Điều kiện: dem nhỏ hơn hoặc bằng 3
    print(f"Số hiện tại là: {dem}")
    dem = dem + 1 # Tăng giá trị của dem lên 1 sau mỗi lần lặp
print("Vòng lặp đã kết thúc.")
# Output:
# Số hiện tại là: 1
# Số hiện tại là: 2
# Số hiện tại là: 3
# Vòng lặp đã kết thúc.

# Ví dụ khác: Đếm ngược
so_dem_nguoc = 5
while so_dem_nguoc > 0:
    print(so_dem_nguoc)
    so_dem_nguoc -= 1 # Viết tắt của so_dem_nguoc = so_dem_nguoc - 1
print("Lift off!")
# Output:
# 5
# 4
# 3
# 2
# 1
# Lift off!

Việc hiểu và vận dụng các cấu trúc điều khiển dòng chảy này là rất quan trọng, vì chúng cho phép chương trình của bạn thực hiện các tác vụ phức tạp và có tính logic.

Kết bài

Việc nắm vững cú pháp cơ bản của Python là bước khởi đầu quan trọng và thú vị trên con đường lập trình của bạn. Từ sự rõ ràng trong cách sử dụng thụt lề để định nghĩa khối mã, đến tính trực quan của các biến, kiểu dữ liệuphép toán, Python được thiết kế để dễ đọc và dễ viết. Các cấu trúc điều khiển dòng chảy như if/elif/elsevòng lặp for/while là những công cụ mạnh mẽ giúp bạn điều khiển logic chương trình một cách linh hoạt. Với một cú pháp thân thiện và dễ tiếp cận, Python không chỉ giúp bạn nhanh chóng biến ý tưởng thành code mà còn khuyến khích bạn phát triển thói quen viết mã sạch và dễ bảo trì. Hãy tiếp tục thực hành và khám phá để trở nên thành thạo hơn với ngôn ngữ lập trình đầy tiềm năng này!

Bài viết liên quan