Khai báo và sử dụng biến trong Python

Python Tutorial | by Hoc Python

Biến (variables) đóng vai trò như những "chiếc hộp" thông minh, giúp chúng ta lưu trữ và quản lý dữ liệu một cách linh hoạt. Python, với cú pháp đơn giản và trực quan, làm cho việc khai báo và sử dụng biến trở nên cực kỳ dễ dàng, ngay cả với những người mới bắt đầu. Bài này sẽ giới thiệu khái niệm cơ bản về biến, tầm quan trọng của chúng trong việc xây dựng các chương trình tương tác, và làm thế nào để bạn có thể bắt đầu sử dụng những "chiếc hộp" này một cách hiệu quả nhất trong Python.

Biến là gì?

Trong lập trình, biến (variables) là một khái niệm cơ bản nhưng cực kỳ quan trọng. Chúng giống như những "chiếc hộp" bạn dùng để lưu trữ và quản lý thông tin trong chương trình của mình.

Định nghĩa

  • Một biến là một tên (hay một định danh) dùng để tham chiếu đến một giá trị hoặc một mảnh dữ liệu trong bộ nhớ máy tính. Bạn có thể hình dung nó như một "hộp" được dán nhãn, và bên trong hộp đó chứa một giá trị cụ thể.

  • Tên dùng để gọi dữ liệu đó sau này: Khi bạn muốn sử dụng hoặc thay đổi dữ liệu đó, bạn chỉ cần gọi tên của chiếc hộp (tên biến) chứ không cần nhớ địa chỉ bộ nhớ phức tạp của nó.

Biến phục vụ nhiều mục đích thiết yếu trong lập trình:

Lưu trữ kết quả tính toán: Khi chương trình thực hiện các phép tính (cộng, trừ, nhân, chia, v.v.), kết quả thường cần được lưu lại để sử dụng cho các bước tiếp theo. Biến giúp bạn làm điều đó.

  • Ví dụ: Bạn tính tổng của hai số và muốn lưu kết quả lại:

so_thu_nhat = 10
so_thu_hai = 5
tong = so_thu_nhat + so_thu_hai # Biến 'tong' lưu trữ kết quả của phép cộng
print(tong) # Output: 15

Lưu trữ thông tin người dùng: Khi bạn muốn chương trình tương tác với người dùng (ví dụ: hỏi tên, tuổi), dữ liệu mà người dùng nhập vào cần được lưu trữ tạm thời để xử lý.

  • Ví dụ:

ten_cua_ban = input("Bạn tên là gì? ") # Biến 'ten_cua_ban' lưu trữ thông tin người dùng nhập vào
print("Xin chào, " + ten_cua_ban + "!")

Giúp code linh hoạt: Nhờ biến, bạn có thể viết code một cách tổng quát. Thay vì phải thay đổi từng con số cụ thể trong code mỗi khi dữ liệu thay đổi, bạn chỉ cần thay đổi giá trị của biến.

  • Ví dụ:

# Không dùng biến - kém linh hoạt
print(10 * 1.05) # Tính giá sau thuế 5% cho 10 đơn vị sản phẩm
# Nếu giá sản phẩm thay đổi thành 12, bạn phải sửa trực tiếp số 10.

# Dùng biến - linh hoạt hơn
gia_san_pham = 10
thue_suat = 0.05
gia_sau_thue = gia_san_pham * (1 + thue_suat)
print(gia_sau_thue)
# Nếu giá sản phẩm thay đổi thành 12, bạn chỉ cần sửa giá trị của biến 'gia_san_pham' một lần duy nhất.

Giúp code dễ đọc: Việc đặt tên biến có ý nghĩa (ví dụ: gia_san_pham thay vì x) giúp người đọc code hiểu được dữ liệu đó đại diện cho cái gì, làm cho chương trình dễ hiểu và dễ bảo trì hơn rất nhiều.

  • Ví dụ:

# Khó hiểu
a = 10
b = 20
c = a * b
print(c)

# Dễ hiểu hơn với tên biến có ý nghĩa
so_luong_hang = 10
don_gia = 20
tong_tien = so_luong_hang * don_gia
print(tong_tien)

Khai báo (Tạo) Biến trong Python

Trong Python, việc khai báo hay tạo biến cực kỳ đơn giản và trực quan. Bạn không cần phải khai báo trước kiểu dữ liệu của biến như trong một số ngôn ngữ khác; Python sẽ tự động nhận diện kiểu dữ liệu dựa trên giá trị bạn gán cho nó.

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

Đặt tên biến đúng và dễ hiểu là một thói quen tốt giúp mã của bạn sạch sẽ và dễ đọc hơn rất nhiều. Dưới đây là các quy tắc và mẹo quan trọng:

Bắt đầu bằng chữ cái (a-z, A-Z) hoặc dấu gạch dưới (_):

  • Hợp lệ: ten, _tuoi, gia_san_pham

  • Không hợp lệ: 10_mon_hang (bắt đầu bằng số)

Không được bắt đầu bằng số: Như ví dụ trên, biến không thể bắt đầu bằng một chữ số.

Chỉ chứa chữ cái, số và dấu gạch dưới: Bạn không thể sử dụng các ký tự đặc biệt khác như @, #, $ hoặc dấu cách trong tên biến.

  • Hợp lệ: ma_san_pham_123, diem_thi

  • Không hợp lệ: ten-cong-ty, so luong (chứa dấu gạch ngang và dấu cách)

Phân biệt chữ hoa/thường: Python là ngôn ngữ phân biệt chữ hoa/thường. Điều này có nghĩa là tenTen là hai biến hoàn toàn khác nhau.

ten = "An"
Ten = "Binh"
print(ten) # Output: An
print(Ten) # Output: Binh

Không dùng các từ khóa của Python: Python có một số từ khóa (keywords) dành riêng cho cú pháp và chức năng của nó (ví dụ: if, for, while, print, True, False, None). Bạn không thể sử dụng chúng làm tên biến.

  • Không hợp lệ: if = 10, for = "loop"

Mẹo hay: Đặt tên có ý nghĩa, dễ hiểu: Đây là quy tắc quan trọng nhất. Tên biến nên phản ánh rõ ràng mục đích hoặc dữ liệu mà nó lưu trữ. Điều này giúp bạn và những người khác dễ dàng hiểu được mã của bạn sau này.

  • Nên dùng: tong_doanh_thu, so_luong_khach_hang, ten_nguoi_dung

  • Nên tránh: tdt, slkh, x (trừ khi là biến tạm thời trong vòng lặp rất ngắn)

Cách gán giá trị (Khai báo)

Trong Python, bạn "khai báo" một biến bằng cách gán cho nó một giá trị. Không cần một từ khóa đặc biệt nào để khai báo biến.

  • Sử dụng dấu bằng đơn (=): Đây là toán tử gán. Giá trị ở bên phải dấu = sẽ được gán cho biến ở bên trái.

  • Python tự động nhận diện kiểu dữ liệu: Bạn không cần phải khai báo int ten_bien; hay string ten_bien;. Python sẽ tự động xác định kiểu dữ liệu của biến dựa trên giá trị bạn gán.

# Gán số nguyên
so_luong_apple = 5
print(type(so_luong_apple)) # Output: <class 'int'>

# Gán số thực
gia_tien = 2.99
print(type(gia_tien)) # Output: <class 'float'>

# Gán chuỗi ký tự
ten_san_pham = "Bánh mì kẹp"
print(type(ten_san_pham)) # Output: <class 'str'>

# Gán giá trị Boolean (Đúng/Sai)
dang_mo_cua = True
print(type(dang_mo_cua)) # Output: <class 'bool'>

Ví dụ cơ bản

Hãy cùng xem các ví dụ cụ thể về việc gán các kiểu giá trị khác nhau cho biến:

  • Gán số (integers và floats):

# Khai báo biến 'tuoi' và gán giá trị số nguyên
tuoi = 30
print(f"Tuổi của tôi là: {tuoi}") # Output: Tuổi của tôi là: 30

# Khai báo biến 'chieu_cao' và gán giá trị số thực
chieu_cao = 1.75
print(f"Chiều cao của tôi là: {chieu_cao} mét") # Output: Chiều cao của tôi là: 1.75 mét

Gán chuỗi (strings):

# Khai báo biến 'ten' và gán giá trị chuỗi ký tự
ten = "Nguyễn Văn A"
print(f"Tên của bạn là: {ten}") # Output: Tên của bạn là: Nguyễn Văn A

# Khai báo biến 'thanh_pho' và gán giá trị chuỗi khác
thanh_pho = 'Hà Nội' # Có thể dùng dấu nháy đơn hoặc kép
print(f"Bạn sống ở: {thanh_pho}") # Output: Bạn sống ở: Hà Nội

Gán giá trị đúng/sai (Booleans):

# Khai báo biến 'is_student' và gán giá trị Boolean True
is_student = True
print(f"Có phải là sinh viên không? {is_student}") # Output: Có phải là sinh viên không? True

# Khai báo biến 'has_car' và gán giá trị Boolean False
has_car = False
print(f"Có xe ô tô không? {has_car}") # Output: Có xe ô tô không? False

Việc hiểu và thực hành cách khai báo biến là nền tảng vững chắc để bạn có thể lưu trữ và thao tác dữ liệu, từ đó xây dựng nên các chương trình Python phức tạp hơn.

Sử dụng Biến trong Python

Sau khi đã biết cách khai báo (tạo) biến, bước tiếp theo là học cách sử dụng chúng để làm việc với dữ liệu trong chương trình của bạn.

Truy cập giá trị của biến

Để sử dụng giá trị mà một biến đang lưu trữ, bạn chỉ cần gọi tên của biến đó. Python sẽ tự động thay thế tên biến bằng giá trị mà nó đang giữ.

  • Ví dụ:

ten_sinh_vien = "Linh"
diem_tb = 8.5

# Truy cập và in giá trị của biến
print(ten_sinh_vien)  # Output: Linh
print(diem_tb)        # Output: 8.5

Thay đổi giá trị của biến

Một trong những đặc tính quan trọng của biến là khả năng thay đổi giá trị của chúng trong suốt quá trình chương trình chạy. Bạn làm điều này bằng cách gán một giá trị mới cho cùng tên biến. Giá trị cũ sẽ bị ghi đè.

Ví dụ:

so_luong_hang = 5
print(f"Số lượng ban đầu: {so_luong_hang}") # Output: Số lượng ban đầu: 5

# Thay đổi giá trị của biến 'so_luong_hang'
so_luong_hang = 10
print(f"Số lượng mới: {so_luong_hang}")    # Output: Số lượng mới: 10

# Bạn cũng có thể thay đổi kiểu dữ liệu của biến
trang_thai = "Đang chờ"
print(f"Trạng thái ban đầu: {trang_thai}") # Output: Trạng thái ban đầu: Đang chờ

trang_thai = True # Giờ đây 'trang_thai' là kiểu Boolean
print(f"Trạng thái cập nhật: {trang_thai}") # Output: Trạng thái cập nhật: True

Sử dụng biến trong phép tính

Biến cực kỳ hữu ích khi bạn cần thực hiện các phép toán. Bạn có thể kết hợp các biến với các phép toán số học, so sánh, hoặc logic để tạo ra các biểu thức phức tạp hơn.

  • Ví dụ với phép toán số học:

gia_tien_a = 25.0
so_luong_a = 2
gia_tien_b = 10.5
so_luong_b = 3

# Tính tổng tiền của sản phẩm A
tong_a = gia_tien_a * so_luong_a
print(f"Tổng tiền sản phẩm A: {tong_a}") # Output: Tổng tiền sản phẩm A: 50.0

# Tính tổng tiền của cả hai sản phẩm
tong_b = gia_tien_b * so_luong_b
tong_tat_ca = tong_a + tong_b
print(f"Tổng tiền tất cả sản phẩm: {tong_tat_ca}") # Output: Tổng tiền tất cả sản phẩm: 81.5

Ví dụ với phép toán so sánh:

tuoi_an = 18
tuoi_binh = 20

# So sánh tuổi của An và Bình
ket_qua_so_sanh = (tuoi_an < tuoi_binh)
print(f"An trẻ hơn Bình: {ket_qua_so_sanh}") # Output: An trẻ hơn Bình: True

# Kiểm tra điều kiện có được phép lái xe không
du_tuoi_lai_xe = (tuoi_an >= 18)
print(f"An đủ tuổi lái xe: {du_tuoi_lai_xe}") # Output: An đủ tuổi lái xe: True

Sử dụng biến với chuỗi ký tự (f-string)

Khi bạn muốn hiển thị thông tin kết hợp giữa văn bản cố định và giá trị của các biến, f-string (formatted string literals) là một cách cực kỳ tiện lợi và hiện đại trong Python. Bạn chỉ cần đặt chữ f hoặc F trước dấu nháy mở đầu chuỗi, và sau đó đặt tên biến trong cặp dấu ngoặc nhọn {} bên trong chuỗi.

  • Ví dụ:

ho_ten = "Trần Thị C"
ma_sinh_vien = "SV003"
khoa = "Công nghệ thông tin"

# Sử dụng f-string để in thông tin một cách rõ ràng
thong_tin_sv = f"Họ và tên: {ho_ten}, Mã SV: {ma_sinh_vien}, Khoa: {khoa}."
print(thong_tin_sv) # Output: Họ và tên: Trần Thị C, Mã SV: SV003, Khoa: Công nghệ thông tin.

diem_ly = 7.5
diem_hoa = 8.0
diem_tb = (diem_ly + diem_hoa) / 2

# f-string cũng có thể thực hiện phép tính nhỏ bên trong
print(f"Điểm trung bình Lý và Hóa là: {(diem_ly + diem_hoa) / 2}") # Output: Điểm trung bình Lý và Hóa là: 7.75
print(f"Bạn {ho_ten} đạt điểm trung bình {diem_tb:.2f} môn Lý Hóa.") # Định dạng số thập phân
# Output: Bạn Trần Thị C đạt điểm trung bình 7.75 môn Lý Hóa.

Việc thành thạo cách sử dụng biến sẽ mở ra cánh cửa để bạn viết các chương trình động và tương tác hơn. Bạn có muốn tìm hiểu về các lỗi thường gặp khi làm việc với biến không?

Các Lỗi Thường Gặp Khi Làm Việc Với Biến trong Python

Khi mới bắt đầu làm việc với biến trong Python, việc mắc lỗi là điều rất bình thường. Hiểu được các lỗi phổ biến sẽ giúp bạn nhanh chóng nhận diện và khắc phục chúng.

Lỗi NameError: Biến chưa được khai báo

Đây là một trong những lỗi phổ biến nhất khi mới học lập trình. Lỗi NameError xảy ra khi bạn cố gắng sử dụng một biến mà Python không biết, tức là biến đó chưa được gán giá trị (chưa được "khai báo" hay "tạo"). Python không tìm thấy tên biến đó trong "bộ nhớ" của nó.

Nguyên nhân:

  • Bạn gõ sai chính tả tên biến.

  • Bạn quên gán giá trị cho biến trước khi sử dụng.

  • Biến được khai báo trong một phạm vi khác (ví dụ: trong một hàm) mà không thể truy cập từ vị trí hiện tại.

Ví dụ:

# Chương trình cố gắng in biến 'ten_nguoi_dung' nhưng biến này chưa được gán giá trị
# Bạn sẽ gặp lỗi NameError ở đây
print(ten_nguoi_dung)

Output (Lỗi):

NameError: name 'ten_nguoi_dung' is not defined

Cách sửa: Đảm bảo rằng biến đã được gán giá trị trước khi bạn cố gắng sử dụng nó.

ten_nguoi_dung = "Minh Anh" # Khai báo và gán giá trị cho biến
print(ten_nguoi_dung)      # Giờ thì chương trình sẽ chạy đúng

Lỗi cú pháp (SyntaxError) khi đặt tên biến

Như đã học ở phần trước, có những quy tắc nghiêm ngặt về cách đặt tên biến trong Python. Nếu bạn vi phạm các quy tắc này, Python sẽ báo lỗi SyntaxError, nghĩa là cú pháp của bạn không hợp lệ.

Nguyên nhân:

  • Tên biến bắt đầu bằng số.

  • Tên biến chứa các ký tự đặc biệt (ngoài chữ cái, số, dấu gạch dưới) như dấu cách, dấu gạch ngang, @, #, $, v.v.

  • Bạn sử dụng một từ khóa của Python làm tên biến.

Ví dụ:

# Lỗi: Tên biến bắt đầu bằng số
10tuoi = 20
print(10tuoi)

Output (Lỗi):

SyntaxError: invalid decimal literal
# Lỗi: Tên biến chứa dấu cách
ten sinh vien = "Quang"
print(ten sinh vien)

Output (Lỗi):

SyntaxError: invalid syntax
# Lỗi: Sử dụng từ khóa 'if' làm tên biến
if = True
print(if)

Output (Lỗi):

SyntaxError: invalid syntax

Cách sửa: Luôn tuân thủ các quy tắc đặt tên biến của Python.

tuoi_hoc_sinh = 20    # Sử dụng dấu gạch dưới thay vì dấu cách hoặc bắt đầu bằng số
ten_sinh_vien = "Quang"
is_active = True     # Đặt tên biến khác với từ khóa 'if'

Nhầm lẫn kiểu dữ liệu khi thực hiện phép toán (TypeError)

Python là một ngôn ngữ có kiểm tra kiểu dữ liệu mạnh mẽ. Điều này có nghĩa là bạn không thể thực hiện các phép toán không tương thích giữa các kiểu dữ liệu khác nhau (ví dụ: cộng một số với một chuỗi văn bản). Khi làm vậy, bạn sẽ gặp lỗi TypeError.

Nguyên nhân:

  • Cố gắng cộng, trừ, nhân, chia... các biến có kiểu dữ liệu không tương thích (ví dụ: số với chuỗi, boolean với số).

  • Cố gắng chuyển đổi một giá trị không hợp lệ sang một kiểu dữ liệu khác (ví dụ: chuyển "hello" thành số nguyên).

Ví dụ:

so_nguyen = 10
chuoi_ky_tu = "abc"

# Lỗi: Cố gắng cộng số với chuỗi
ket_qua = so_nguyen + chuoi_ky_tu
print(ket_qua)

Output (Lỗi):

TypeError: unsupported operand type(s) for +: 'int' and 'str'

Python báo rằng toán tử + không được hỗ trợ giữa kiểu int (số nguyên) và str (chuỗi).

Cách sửa: Đảm bảo rằng các biến tham gia vào phép toán có kiểu dữ liệu phù hợp. Nếu cần, hãy chuyển đổi kiểu dữ liệu bằng các hàm như int(), float(), str().

so_nguyen = 10
chuoi_so = "20" # Đây là chuỗi, không phải số

# Chuyển đổi chuỗi_so thành số nguyên trước khi cộng
ket_qua = so_nguyen + int(chuoi_so)
print(ket_qua) # Output: 30

# Chuyển đổi số nguyên thành chuỗi trước khi nối
thong_bao = "Tổng số là: " + str(so_nguyen)
print(thong_bao) # Output: Tổng số là: 10

Việc làm quen với các thông báo lỗi này là một phần quan trọng của quá trình học lập trình. Đừng sợ lỗi, hãy coi chúng là chỉ dẫn giúp bạn hiểu rõ hơn về cách Python hoạt động!

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