Biến trong Python (VARIABLES)

Bài viết này giúp bạn:

Sau chương này, bạn sẽ hiểu và biết cách:

  • Tạo và sử dụng biến (variable) trong Python.
  • Hiểu tại sao cần biến và cách giúp code gọn gàng hơn.
  • Biết quy tắc đặt tên biến, cách dùng f-string với biến.
  • Biết cách thay đổi logic chương trình chỉ bằng chỉnh sửa 1 dòng thay vì hàng loạt dòng lặp lại.

1. Vấn đề trước khi có biến

Trong chương trước, ta đã viết chương trình:

print(f"20 days are {20 * 24 * 60} minutes")

Nếu ta muốn tính cho 35, 50, 110 ngày… ta có thể copy dòng này và thay số:

print(f"20 days are {20 * 24 * 60} minutes")
print(f"35 days are {35 * 24 * 60} minutes")
print(f"50 days are {50 * 24 * 60} minutes")
print(f"110 days are {110 * 24 * 60} minutes")

Kết quả:

20 days are 28800 minutes
35 days are 50400 minutes
50 days are 72000 minutes
110 days are 158400 minutes

Kết quả đúng, nhưng…

Nếu ta muốn đổi từ phút (minutes) sang giây (seconds), ta phải:

  • Đổi phép tính ở cả 4 dòng (6060*60).
  • Đổi cả chữ "minutes" thành "seconds" trong từng dòng.

Rất mất thời gian và dễ sai! → Đây là lúc cần dùng biến.

2. Giới thiệu về Biến (Variables)

Biến trong lập trình giống như một cái hộp để lưu trữ giá trị.

Bạn có thể:

  • Đặt tên cho biến.
  • Gán cho nó một giá trị.
  • Dùng biến đó ở nhiều nơi khác nhau.

Cú pháp:

tên_biến = giá_trị

Ví dụ:

days_in_a_week = 7
hours_in_a_day = 24

Python sẽ nhớ rằng:

  • days_in_a_week có giá trị 7.
  • hours_in_a_day có giá trị 24.

3. Ứng dụng biến vào ví dụ của ta

Ta tạo một biến lưu công thức chuyển đổi ngày → giây:

to_seconds = 24 * 60 * 60

Và dùng lại ở nhiều nơi:

print(f"20 days are {20 * to_seconds} seconds")
print(f"35 days are {35 * to_seconds} seconds")
print(f"50 days are {50 * to_seconds} seconds")
print(f"110 days are {110 * to_seconds} seconds")

Kết quả:

20 days are 1728000 seconds
35 days are 3024000 seconds
50 days are 4320000 seconds
110 days are 9504000 seconds

Code chạy đúng, gọn hơn rất nhiều!

4. Ưu điểm khi dùng biến

Trước:

Phải sửa 4 chỗ nếu muốn đổi từ “minutes” sang “seconds”.

Sau:

Chỉ cần sửa 1 dòng (giá trị biến):

to_units = 24 * 60 * 60   # đổi thành 24 * 60 nếu chỉ muốn tính phút

và đổi nhãn hiển thị:

unit_name = "seconds"

Cập nhật code:

to_units = 24 * 60 * 60
unit_name = "seconds"

print(f"20 days are {20 * to_units} {unit_name}")
print(f"35 days are {35 * to_units} {unit_name}")
print(f"50 days are {50 * to_units} {unit_name}")
print(f"110 days are {110 * to_units} {unit_name}")

Kết quả:

20 days are 1728000 seconds
35 days are 3024000 seconds
50 days are 4320000 seconds
110 days are 9504000 seconds

Giờ nếu bạn muốn đổi sang hours, chỉ cần:

to_units = 24
unit_name = "hours"

Không cần sửa bất kỳ dòng print() nào nữa. Đây chính là sức mạnh của biến.

5. Quy tắc đặt tên biến trong Python

Quy tắcVí dụ đúngVí dụ saiGhi chú
Dùng chữ cái, số và dấu gạch dưới _days_in_monthdays-in-monthDấu - không hợp lệ.
Không bắt đầu bằng sốunit_count2daysKhông được bắt đầu bằng số.
Phân biệt chữ hoa và thườngunit_nameUnit_NamePython phân biệt hoa/thường.
Tên biến nên có ý nghĩaseconds_in_dayx, data1Giúp dễ hiểu khi đọc code.
Không dùng từ khóa đặc biệt của Pythonfor, if, print, classPython có hơn 30 “reserved keywords”.

Bạn có thể xem danh sách từ khóa bằng lệnh:

import keyword
print(keyword.kwlist)

6. Kiểu dữ liệu của biến

Python tự động xác định kiểu dữ liệu khi bạn gán giá trị.

Không cần khai báo kiểu như các ngôn ngữ khác (C, Java, v.v.)

Ví dụ:

name = "Python"    # String
days = 20          # Integer
rate = 3.5         # Float

Bạn có thể kiểm tra kiểu biến bằng:

print(type(name))
print(type(days))
print(type(rate))

Kết quả:

<class 'str'>
<class 'int'>
<class 'float'>

7. Kết hợp biến trong chuỗi (f-string)

Như đã biết, f-string cho phép ta chèn trực tiếp biến vào chuỗi.

Ví dụ:

days = 10
to_hours = 24
unit = "hours"

print(f"{days} days are {days * to_hours} {unit}")

Kết quả:

10 days are 240 hours

8. Tóm tắt lợi ích của biến

Tác dụngGiải thích
Tái sử dụng giá trịDùng một giá trị ở nhiều nơi mà chỉ cần khai báo 1 lần.
Dễ bảo trì codeThay đổi giá trị 1 lần, toàn bộ code cập nhật theo.
Code dễ đọcDùng tên biến mô tả giúp hiểu nhanh chương trình làm gì.
Hạn chế lỗiTránh sai sót khi sửa nhiều chỗ trùng lặp.

9. Bài tập thực hành

Bài tập 1

Tạo chương trình in số phút trong 12 ngày, sử dụng biến.

to_minutes = 24 * 60
unit_name = "minutes"

print(f"12 days are {12 * to_minutes} {unit_name}")

Bài tập 2

Viết chương trình tính số giây trong nhiều ngày khác nhau:

  • 7 ngày
  • 15 ngày
  • 30 ngày

Sử dụng biến to_secondsunit_name.

to_seconds = 24 * 60 * 60
unit_name = "seconds"

print(f"7 days are {7 * to_seconds} {unit_name}")
print(f"15 days are {15 * to_seconds} {unit_name}")
print(f"30 days are {30 * to_seconds} {unit_name}")

Bài tập 3

Thử thay đổi giá trị to_seconds24 * 60unit_name"minutes".

Chạy lại chương trình và xem điều gì thay đổi.

💡 Gợi ý: Bạn vừa đổi logic chương trình mà không cần sửa 3 dòng print() nào!