NỘI DUNG BÀI HỌC

✅ Hiểu khái niệm biến trong Python và cách khai báo
✅ Nắm được các kiểu dữ liệu cơ bản (int, float, string, bool, list, tuple, dict, set)
✅ Thao tác cơ bản với biến và dữ liệu
✅ Hiểu và sử dụng các loại toán tử trong Python (số học, so sánh, logic, gán, membership, identity)
✅ Thực hành qua nhiều ví dụ minh họa
✅ Bài tập nhỏ cuối buổi để ôn tập



1. Biến trong Python

Khái niệm

  • Nói một cách dễ hiểu nhất, biến giống như nhãn dán trên một chiếc hộp – nhãn giúp ta biết bên trong hộp chứa cái gì, và có thể thay đổi nội dung hộp bất kỳ lúc nào.

  • Mỗi chiếc hộp (mỗi biến) luôn có hai thứ:

    • Cái nhãn (Tên biến): Để chúng ta có thể gọi tên và tìm lại đúng chiếc hộp mình cần.
    • Thứ bên trong (Giá trị của biến): Là thông tin mà chúng ta cất vào trong hộp (ví dụ: một con số, một dòng chữ, ...).

    => Mục đích của biến là để lưu trữ dữ liệu và chúng ta có thể lấy ra dùng lại bất cứ khi nào cần bằng cách gọi tên của nó.

  • Python là ngôn ngữ dynamic typing → không cần khai báo kiểu trước.

Ví dụ:

name = "Lan"
age = 25
height = 1.65
is_student = True

print(name, age, height, is_student)


Quy tắc đặt tên biến

  • Bắt đầu bằng chữ cái hoặc _

  • Không chứa ký tự đặc biệt (! @ # $ % ...)

  • Phân biệt chữ hoa, thường (age khác Age)

  • Không được trùng với từ khóa Python như: class, for, if...

⚠️ Lỗi thường gặp & cách sửa

  • 2age = 25 → Sai vì biến không thể bắt đầu bằng số

  • class = "Python" → Sai vì trùng từ khóa

  • user-name = "Lan" → Sai vì có dấu -
    👉 ✅ Cách sửa: đổi thành user_name


2. Kiểu dữ liệu cơ bản trong Python

🔹 Số (Numbers: int, float, complex)

  • int: số nguyên (có thể âm, dương, hoặc 0).

  • float: số thực (có dấu thập phân).

  • complex: số phức (dùng trong toán học cao cấp).

a = 42       # int
b = -7       # int âm
c = 3.14   # float
d = 2 + 3j   # complex

print(type(a), type(b), type(c), type(d))

👉 Lỗi thường gặp:

  • Dùng dấu phẩy , thay vì dấu chấm . cho số thực:
    pi = 3,14 → Đây là tuple, không phải float.

🔹 Boolean

Chỉ có 2 giá trị: True hoặc False.
Thường dùng trong so sánh, điều kiện, vòng lặp.

Ứng dụng thực tế:

  • Check user có đăng nhập chưa

  • Kiểm tra một form có hợp lệ không

  • So sánh dữ liệu trong test automation

Ví dụ:

is_logged_in = True
print(is_logged_in)

print(10 > 5)  # True
print(3 == 4)  # False

 

👉 Lỗi thường gặp:

  • Gõ sai chính tả: ❌ true hoặc false → phải viết hoa chữ cái đầu True, False.

🔹 NoneType trong Python

Khái niệm

  • None là một giá trị đặc biệt trong Python.

  • Nó đại diện cho “không có gì” / “trống rỗng” / “null value”.

  • Kiểu dữ liệu của nó là NoneType (chỉ có duy nhất một giá trị: None).

👉 Dùng type(None) sẽ ra <class 'NoneType'>.

Khi nào dùng None?

  • Biến khởi tạo mà chưa có giá trị rõ ràng:

    result = None
    print(result)   # None
    
  • Hàm không return gì → mặc định trả về None:

    def greet(name):
        print("Hello", name)
    
    x = greet("Lan")
    print(x)   # None
    
  • Để kiểm tra điều kiện (placeholder):

    user = None
    if user is None:
        print("Chưa có user đăng nhập")
    

Ứng dụng thực tế của None

  1. Trong Automation Testing
    • Khi một hàm lấy dữ liệu từ API nhưng request thất bại, ta trả về None để báo lỗi.

    • Ví dụ:

      def get_user(id):
          # giả sử gọi API thất bại
          return None
      
      user = get_user(101)
      if user is None:
          print("Không tìm thấy user")
      
  2. Trong xử lý dữ liệu
    • Khi đọc file CSV, những ô trống có thể được gán None.

  3. Trong OOP (Object-Oriented Programming)
    • Một thuộc tính có thể được khởi tạo là None cho đến khi có giá trị thật sự.

      class Student:
          def __init__(self, name):
              self.name = name
              self.score = None   # chưa có điểm
      
      s1 = Student("Lan")
      print(s1.score)   # None
      

       

Lỗi thường gặp với None

  • So sánh sai cách:
    if user == None: (không sai cú pháp, nhưng không được khuyến khích).
    ✅ Dùng: if user is None:

  • Dùng None như số hoặc chuỗi:

    x = None
    print(x + 1)   # ❌ TypeError
    

    ✅ Giải pháp: luôn kiểm tra is None trước khi dùng.


Kiểu dữ liệu Giá trị Ứng dụng chính Ví dụ
int Số nguyên (… -2, -1, 0, 1, 2 …) Đếm, vòng lặp, chỉ số a = 10
float Số thực (3.14, -2.5) Tính toán tiền, số đo, dữ liệu khoa học b = 3.14
complex Số phức (a+bj) AI, xử lý tín hiệu, toán học nâng cao c = 2+3j
bool True hoặc False Điều kiện, kiểm thử, assert is_pass = True
NoneType None (giá trị rỗng) Placeholder, khi hàm không trả về gì result = None


🔹 Chuỗi (String)

Chuỗi là tập hợp các ký tự, được đặt trong " " hoặc ' '.

name = "Lan"
sentence = 'Python rất dễ học!'

Ứng dụng thực tế:

  • Lưu họ tên người dùng

  • Lưu mật khẩu (kết hợp mã hóa)

  • Lưu nội dung văn bản, email, logs

Ví dụ nối chuỗi:

first = "Hello"
last = "World"
print(first + " " + last)  # Hello World

👉 Lỗi thường gặp:

  • Quên dấu nháy " " hoặc ' ': ❌ text = Hello

  • Lẫn lộn nháy đơn và kép: ❌ "I'm Lan'

🔹 List


Khái niệm

  • Listcấu trúc dữ liệu quan trọng nhất trong Python.

  • Nó là một danh sách có thứ tự (ordered)có thể thay đổi (mutable).

  • Các phần tử trong list có thể là bất kỳ kiểu dữ liệu nào, thậm chí list chứa list khác.

Cú pháp tạo list

fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4, 5]
mixed = ["Lan", 25, True, 3.14]
empty = []   # list rỗng

Truy cập phần tử

fruits = ["apple", "banana", "cherry"]
print(fruits[0])   # apple
print(fruits[-1])  # cherry (chỉ số âm = từ cuối lên)

Thay đổi phần tử

fruits[1] = "mango"
print(fruits)  # ['apple', 'mango', 'cherry']

Thêm, xóa phần tử

fruits.append("orange")     # thêm vào cuối
fruits.insert(1, "kiwi")    # thêm vào vị trí chỉ định
print(fruits)

fruits.remove("apple")      # xóa theo giá trị
fruits.pop(0)               # xóa theo index
print(fruits)

 

Ứng dụng thực tế của List

  1. Danh sách học viên trong lớp

    students = ["Lan", "An", "Bình", "Hà"]
    for s in students:
        print("Xin chào", s)
    
 
  1. Lưu kết quả test cases trong Automation Testing

    test_results = ["Pass", "Fail", "Pass", "Pass"]
    print("Số lượng test passed:", test_results.count("Pass"))
    
 
  1. Quản lý giỏ hàng trong website thương mại điện tử

    cart = ["iPhone", "MacBook", "AirPods"]
    cart.append("iPad")
    print("Giỏ hàng của bạn:", cart)
    
 
  1. Xử lý dữ liệu từ file CSV (danh sách điểm học sinh)

    scores = [9, 7, 10, 8, 6]
    print("Điểm cao nhất:", max(scores))
    print("Điểm trung bình:", sum(scores)/len(scores))
    

     

⚠️ Lỗi thường gặp khi dùng List

  • Truy cập phần tử ngoài phạm vi:

    fruits = ["apple", "banana"]
    print(fruits[5])  # ❌ IndexError
    

✅ Cách xử lý: kiểm tra len(fruits) trước.

  • Xóa phần tử không tồn tại:

    fruits.remove("orange")  # ❌ ValueError
    

✅ Cách xử lý: kiểm tra "orange" in fruits trước khi xóa.

🔹 Tuple

  • Giống list, nhưng bất biến (immutable) → không thay đổi được sau khi tạo.

  • Thường dùng cho dữ liệu cố định.

    Ứng dụng thực tế:

    • Tọa độ (x, y) trong game, đồ họa.

    • Ngày tháng năm (dd, mm, yyyy).

Ví dụ:

point = (10, 20)
print(point[0])  # 10

👉 Lỗi thường gặp:

  • Thử thay đổi giá trị tuple:

    point[0] = 99   # ❌ TypeError: 'tuple' object does not support item assignment
    
 

✅ Cách sửa: dùng list thay vì tuple nếu cần thay đổi.

🔹 Dictionary

  • Lưu dữ liệu dạng key → value.

  • Giống như “bảng tra cứu”.

    Ứng dụng thực tế:

    • Lưu thông tin user profile (tên, tuổi, email).

    • API trả về dữ liệu dạng JSON → Python dùng dict để xử lý.

Ví dụ:

student = {"name": "Lan", "age": 25}
print(student["name"])   # Lan

 

👉 Lỗi thường gặp:

  • Truy cập key không tồn tại: ❌ student["score"] → KeyError
    ✅ Cách sửa: dùng student.get("score", "N/A")

🔹 Set

1. Khái niệm
  • Set là một tập hợp (collection) trong Python.

  • Các đặc điểm chính:

    • Không chứa phần tử trùng lặp

    • Không có thứ tự cố định (unordered)

    • Có thể thay đổi (mutable) – thêm hoặc xóa phần tử được
      ❌ Nhưng các phần tử trong Set phải là bất biến (immutable) → ví dụ: số, chuỗi, tuple được, nhưng list hoặc dict thì không.

2. Cách tạo Set
# Set rỗng
empty_set = set()

# Set với phần tử
fruits = {"apple", "banana", "cherry", "apple"}  
print(fruits)  # {'apple', 'banana', 'cherry'} (apple chỉ xuất hiện 1 lần)
3. Các thao tác cơ bản
🔹 Thêm và xóa phần tử
fruits = {"apple", "banana", "cherry"}
fruits.add("mango")  
print(fruits)   # {'apple', 'banana', 'cherry', 'mango'}

fruits.remove("banana")  
print(fruits)   # {'apple', 'cherry', 'mango'}

fruits.discard("orange")  # không báo lỗi nếu không có phần tử
🔹 Kiểm tra phần tử có trong Set không
if "apple" in fruits:
    print("Apple có trong tập hợp!")
🔹 Toán tử tập hợp (Set operations)

Set hỗ trợ các phép toán giống toán học:

A = {1, 2, 3, 4}
B = {3, 4, 5, 6}

print(A | B)   # Hợp: {1, 2, 3, 4, 5, 6}
print(A & B)   # Giao: {3, 4}
print(A - B)   # Hiệu: {1, 2}
print(A ^ B)   # Phần tử chỉ có ở 1 tập hợp: {1, 2, 5, 6}
4. Ứng dụng thực tế của Set
🔹 Ứng dụng 1: Loại bỏ phần tử trùng lặp
emails = ["a@gmail.com", "b@gmail.com", "a@gmail.com", "c@gmail.com"]
unique_emails = set(emails)
print(unique_emails)  # {'a@gmail.com', 'b@gmail.com', 'c@gmail.com'}

👉 Dùng trong xử lý dữ liệu khách hàng, lọc log file, loại bỏ giá trị trùng trong automation test.

🔹 Ứng dụng 2: Tìm phần chung giữa 2 danh sách
test_case_A = {"login", "logout", "search", "checkout"}
test_case_B = {"search", "payment", "checkout"}

common = test_case_A & test_case_B
print("Test cases chung:", common)  # {'search', 'checkout'}

👉 Dùng khi so sánh bộ test case của 2 team hoặc 2 phiên bản khác nhau.

🔹 Ứng dụng 3: Kiểm tra nhanh sự tồn tại của phần tử
blacklist = {"spam.com", "virus.com", "malware.com"}

if "spam.com" in blacklist:
    print("Website nằm trong danh sách đen, chặn truy cập!")
 

👉 Dùng trong kiểm tra bảo mật hoặc lọc dữ liệu đầu vào.

🔹 Ứng dụng 4: Xử lý dữ liệu lớn nhanh hơn List

Set trong Python có tốc độ tìm kiếm (in) nhanh hơn List (vì dùng hash table).

Ví dụ:

numbers_list = list(range(1000000))
numbers_set = set(numbers_list)

print(999999 in numbers_list)  # chậm hơn
print(999999 in numbers_set)   # nhanh hơn

 

👉 Dùng trong hệ thống lớn cần tra cứu dữ liệu nhanh.

5. Lỗi thường gặp khi dùng Set

❌ Set không cho phép index:

fruits = {"apple", "banana"}
print(fruits[0])  # Lỗi: TypeError

✅ Giải pháp: convert sang list → list(fruits)[0].

❌ Thứ tự không cố định:

fruits = {"apple", "banana", "cherry"}
print(fruits)  # mỗi lần in ra có thể khác nhau

✅ Nhấn mạnh cho học viên: set không quan tâm thứ tự.

👉 Tóm lại: Set = Bộ sưu tập không trùng lặp, không quan tâm thứ tự, rất mạnh khi cần loại bỏ duplicates hoặc làm toán tập hợp.

🔹 Bảng so sánh kiểu dữ liệu Python

Kiểu dữ liệu Có thứ tự (Ordered) Cho phép trùng lặp Mutable (có thể thay đổi) Cú pháp tạo Truy cập phần tử Ứng dụng chính Ví dụ
List ✅ Có ✅ Có ✅ Có [1, 2, 3] Dùng index (0,1,2…) Lưu danh sách có thể thay đổi (user, test case) lst = [1,2,3]
Tuple ✅ Có ✅ Có ❌ Không (immutable) (1, 2, 3) Dùng index Dữ liệu cố định, làm key trong dict coords = (10,20)
Set ❌ Không ❌ Không ✅ Có (thêm/xoá được) {1, 2, 3} hoặc set() Không hỗ trợ index, chỉ lặp Loại bỏ trùng lặp, toán tử tập hợp (∩, ∪, -) s = {1,2,3}
Dict ✅ Có (từ Python 3.7+) ❌ Key không trùng ✅ Có {"a":1, "b":2} Truy cập bằng key Lưu dữ liệu dạng key-value (giống JSON, API) d = {"name":"Lan"}

 

3. Toán tử trong Python

🔹 Số học

x, y = 10, 3
print(x + y, x - y, x * y, x / y, x // y, x % y, x ** y)

👉 Lỗi thường gặp: chia cho 0

print(5 / 0)  # ❌ ZeroDivisionError

 

🔹 So sánh

print(10 > 5, 10 == 5, 10 != 5)

🔹 Logic

a, b = True, False
print(a and b, a or b, not a)

🔹 Gán

x = 5
x += 3   # x = x + 3
print(x) # 8

🔹 Membership

fruits = ["apple", "banana"]
print("apple" in fruits)      # True
print("orange" not in fruits) # True

🔹 Identity

a = [1, 2]
b = [1, 2]
print(a == b)  # True
print(a is b)  # False


4. Tóm tắt buổi học

  • Biết cách khai báo biến & quy tắc đặt tên

  • Hiểu các kiểu dữ liệu cơ bản

  • Thành thạo các loại toán tử

  • Hiểu và xử lý lỗi thường gặp (IndexError, KeyError, ZeroDivisionError, IndentationError, NameError)

👉 Chuẩn bị buổi 3: Cấu trúc điều kiện if, else, elif và vòng lặp (for, while).

Teacher

Teacher

Hà Lan

QA Automation

With over 5 years of experience in web, API, and mobile test automation, built strong expertise in designing and maintaining automation frameworks across various domains and international projects. Committed to mentoring and knowledge sharing, I provide practical guidance and proven techniques to help aspiring testers develop their skills and succeed in the automation field.

Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học