Các Phép Toán và Cấu Trúc Điều Khiển Luồng trong Python

Các Phép Toán Bổ Sung

Phép Toán Thành Viên (Membership Operators)

Các phép toán thành viên được sử dụng để kiểm tra xem một giá trị có tồn tại trong một chuỗi, danh sách, tuple, set hoặc dictionary hay không.

  • in: Trả về True nếu một giá trị cụ thể được tìm thấy trong đối tượng.
  • not in: Trả về True nếu một giá trị cụ thể không được tìm thấy trong đối tượng.

Ví dụ minh họa:

danh_sach_nhan_vat = ['Monkey D. Luffy', 'Roronoa Zoro', 'Nami']
ten_tim_kiem = input('Nhập tên nhân vật cần tìm: ')

print(f"'{ten_tim_kiem}' có trong danh sách không? {ten_tim_kiem in danh_sach_nhan_vat}")
print(f"'{ten_tim_kiem}' không có trong danh sách phải không? {ten_tim_kiem not in danh_sach_nhan_vat}")

Phép Toán Định Danh (Identity Operators)

Phép toán định danh kiểm tra xem hai biến có cùng tham chiếu đến một đối tượng trong bộ nhớ hay không.

  • is: Trả về True nếu hai biến cùng trỏ đến một đối tượng (có cùng địa chỉ bộ nhớ).
  • ==: Trả về True nếu giá trị của hai đối tượng bằng nhau.

Ví dụ minh họa sự khác biệt giữa is==:

list_a = ['táo', 'chuối', 'cam']
list_b = ['táo', 'chuối', 'cam']
list_c = list_a # list_c giờ đây tham chiếu đến cùng đối tượng với list_a

print(f"Giá trị của list_a và list_b có bằng nhau không? {list_a == list_b}")
print(f"list_a và list_b có cùng một đối tượng không? {list_a is list_b}")
print(f"list_a và list_c có cùng một đối tượng không? {list_a is list_c}")

print(f"Địa chỉ bộ nhớ của list_a: {id(list_a)}")
print(f"Địa chỉ bộ nhớ của list_b: {id(list_b)}")
print(f"Địa chỉ bộ nhớ của list_c: {id(list_c)}")

Kiểm Soát Luồng (Control Flow)

Kiểm soát luồng đề cập đến thứ tự thực hiện các lệnh trong một chương trình. Mọi chương trình đều tuân theo một trong ba cấu trúc luồng chính:

  • Cấu trúc Tuần tự: Các lệnh được thực thi theo thứ tự từ trên xuống dưới.
  • Cấu trúc Rẽ nhánh (Điều kiện): Chương trình thực hiện các khối lệnh khác nhau tùy thuộc vào điều kiện cụ thể.
  • Cấu trúc Lặp (Vòng lặp): Một khối lệnh được thực hiện lặp đi lặp lại nhiều lần cho đến khi một điều kiện nào đó không còn đúng nữa.

Các nguyên tắc cơ bản trong Python:

  1. Mọi điều kiện đều được đánh giá thành giá trị Boolean (True hoặc False).
  2. Python sử dụng thụt lề (indentation) để xác định các khối lệnh (code blocks).
  3. Các dòng lệnh thuộc cùng một khối phải có cùng mức thụt lề.
  4. Trong Python, khuyến nghị sử dụng bốn dấu cách cho mỗi cấp độ thụt lề.
  5. Nếu một dòng lệnh kết thúc bằng dấu hai chấm (:), thì dòng tiếp theo phải được thụt lề để thuộc về khối lệnh đó.

1. Cấu trúc Tuần tự

Đây là cấu trúc đơn giản nhất, trong đó các lệnh được thực thi lần lượt từ đầu đến cuối chương trình.

2. Cấu trúc Rẽ nhánh (Điều kiện)

Cấu trúc này cho phép chương trình đưa ra quyết định và thực hiện các hành động khác nhau dựa trên các điều kiện.

a. Cấu trúc if đơn giản

Khối lệnh bên trong if chỉ được thực thi nếu điều kiện là True.

so_dau_vao = int(input('Nhập một số nguyên: '))
if so_dau_vao > 10:
    print('Số bạn nhập lớn hơn 10.')
print('Chương trình kết thúc.')

b. Cấu trúc if-else

Sử dụng if-else, một trong hai khối lệnh sẽ luôn được thực thi: khối if nếu điều kiện là True, hoặc khối else nếu điều kiện là False.

tuoi_nguoi_dung = int(input('Bạn bao nhiêu tuổi? '))
if tuoi_nguoi_dung >= 18:
    print('Bạn đủ tuổi để tham gia.')
else:
    print('Bạn chưa đủ tuổi để tham gia.')

c. Cấu trúc if-elif-else

elif (viết tắt của "else if") cho phép bạn kiểm tra nhiều điều kiện một cách tuần tự. Chương trình sẽ thực thi khối lệnh của điều kiện đầu tiên được đánh giá là True. Nếu không có điều kiện nào đúng, khối else (nếu có) sẽ được thực thi.

diem_so = int(input('Nhập điểm của bạn (0-100): '))

if diem_so >= 90:
    print('Bạn đạt loại Xuất sắc!')
elif diem_so >= 75:
    print('Bạn đạt loại Giỏi.')
elif diem_so >= 60:
    print('Bạn đạt loại Khá.')
elif diem_so >= 40:
    print('Bạn đạt loại Trung bình.')
else:
    print('Bạn cần cố gắng hơn rất nhiều.')

d. Cấu trúc Rẽ nhánh Lồng nhau

Bạn có thể đặt một câu lệnh điều kiện (if, if-else, if-elif-else) bên trong một câu lệnh điều kiện khác.

tai_khoan_chinh = 'admin'
mat_khau_chinh = '12345'

nhap_tai_khoan = input('Nhập tên tài khoản: ')
if nhap_tai_khoan == tai_khoan_chinh:
    print('Tên tài khoản đúng.')
    nhap_mat_khau = input('Nhập mật khẩu: ')
    if nhap_mat_khau == mat_khau_chinh:
        print('Đăng nhập thành công! Chào mừng.')
    else:
        print('Mật khẩu không đúng.')
else:
    print('Tên tài khoản không tồn tại.')

3. Cấu trúc Lặp (Loops)

Cấu trúc lặp cho phép thực hiện một khối lệnh nhiều lần. Python cung cấp vòng lặp whilefor (bài viết này tập trung vào while).

a. Vòng lặp while

Vòng lặp while sẽ liên tục thực thi khối lệnh bên trong chừng nào điều kiện của nó còn là True.

print("--- Trò chơi đoán số bí mật ---")
so_bi_mat = '25' # Giả sử số bí mật là 25

while True:
    doan_cua_ban = input("Hãy đoán một số (nhập 'exit' để thoát): ")
    if doan_cua_ban.lower() == 'exit':
        print("Bạn đã chọn thoát trò chơi.")
        break
    elif doan_cua_ban == so_bi_mat:
        print("Chúc mừng! Bạn đã đoán đúng số bí mật.")
        break # Thoát vòng lặp khi đoán đúng
    else:
        print("Sai rồi, hãy thử lại.")
print("Chương trình kết thúc trò chơi.")

b. Vòng lặp while và câu lệnh break

Câu lệnh break được sử dụng để thoát ngay lập tức khỏi vòng lặp hiện tại, bất kể điều kiện của vòng lặp còn True hay không. Chương trình sẽ tiếp tục thực thi từ lệnh ngay sau vòng lặp.

dem_so = 0
while True:
    print(f"Đang đếm: {dem_so}")
    dem_so += 1
    if dem_so >= 5:
        print("Đã đạt 5, sử dụng 'break' để thoát vòng lặp.")
        break # Thoát vòng lặp while
print("Chương trình tiếp tục thực hiện ngoài vòng lặp.")

c. Ý nghĩa của break trong vòng lặp lồng nhau

Khi sử dụng break trong các vòng lặp lồng nhau, nó chỉ thoát khỏi vòng lặp mà nó trực tiếp nằm trong đó, không ảnh hưởng đến các vòng lặp bên ngoài.

while True: # Vòng lặp bên ngoài: Đăng nhập
    ten_dang_nhap = input("Nhập tên đăng nhập: ")
    mat_khau = input("Nhập mật khẩu: ")

    if ten_dang_nhap == "user123" and mat_khau == "securepass":
        print("Đăng nhập thành công! Chào mừng bạn đến với hệ thống.")
        while True: # Vòng lặp bên trong: Menu tùy chọn
            lua_chon = input("Chọn hành động (1: Xem hồ sơ, 2: Đăng xuất): ")
            if lua_chon == '1':
                print("Đang hiển thị thông tin hồ sơ...")
            elif lua_chon == '2':
                print("Đang đăng xuất khỏi hệ thống.")
                break # Thoát vòng lặp bên trong (menu)
            else:
                print("Lựa chọn không hợp lệ, vui lòng thử lại.")
        break # Thoát vòng lặp bên ngoài (đăng nhập) sau khi đã đăng xuất khỏi menu
    else:
        print("Tên đăng nhập hoặc mật khẩu không đúng. Vui lòng thử lại.")
print("Chương trình đã dừng hoàn toàn.")

d. Sử dụng biến cờ (Flag Variable) để điều khiển vòng lặp

Một phương pháp phổ biến để kiểm soát vòng lặp là sử dụng một biến boolean (biến cờ). Khi điều kiện để dừng vòng lặp được đáp ứng, bạn chỉ cần thay đổi giá trị của biến cờ, và vòng lặp sẽ dừng lại ở lần kiểm tra điều kiện tiếp theo.

tiep_tuc_thuc_hien = True
dem_luot = 0

while tiep_tuc_thuc_hien:
    print(f"Lần thực hiện thứ: {dem_luot + 1}")
    phan_hoi = input("Bạn có muốn tiếp tục không? (y/n): ")
    if phan_hoi.lower() == 'n':
        tiep_tuc_thuc_hien = False # Đặt biến cờ thành False để dừng vòng lặp
        print("Đã nhận lệnh dừng.")
    dem_luot += 1
print("Vòng lặp đã hoàn thành.")

Thẻ: python Operators ControlFlow ConditionalStatements Looping

Đăng vào ngày 31 tháng 5 lúc 07:10