Biến và Kiểu Dữ Liệu

Nam Nguyễn

Biến Trong Python

Trong lập trình biến được sử dụng để lưu trữ dữ liệu trong chương trình. Dữ liệu được lưu trữ trong một biến bất kỳ có thể thay đổi trong khi chạy chương trình.

language = "Python"
print("Bạn đang học ngôn ngữ " + language)

Trong dòng đầu tiến ở ví dụ trên chúng ta đã khởi tạo có một biến tên là language với dữ liệu ban đầu là một chuỗi ký tự Python:

language = "Python"

Trong một số ngôn ngữ khác biến sẽ cần được khai báo. Việc khai báo biến bao gồm đặt tên cho biến và xác định kiểu dữ liệu của biến đó. Ví dụ trong Java (cặp dấu // dùng để tạo comment trong Java):

string language; // khai báo biến language với kiểu dữ liệu là string
language = "Python"; // gán giá trị cho biến language

Với Python chúng ta sẽ bỏ qua bước khai báo thay vào đó sẽ thực hiện việc khởi tạo biến như bạn thấy ở ví dụ trước đó. Khởi tạo biến sẽ bao gồm đồng thời việc khai báo biến và gán giá trị cho biến.

Trong Python khi đặt tên biến bạn cần chú ý:

  • Tên biến có thể được bắt đầu bằng ký tự _, $ hoặc bất cứ chữ cái nào (in hoa hoặc in thường).
  • Tên biến không được bắt đầu bằng chữ số. Ví dụ tên biến 100invalid là không hợp lệ.
  • Tên biến không được bao gồm ký tự trống trong đó.
  • Không sử dụng các từ được bảo lưu trong Python như print, if, else... để đặt tên cho biến. Ví dụ tên biến print là không hợp lệ, ngược lại tên biến print1, print_2, printHello... là hợp lệ.

Kiểu Dữ Liệu

Dữ liệu xuất hiện trong quá trình chạy chương trình được Python lưu trữ trong bộ nhớ tạm. Dữ liệu được phân biệt theo các kiểu khác nhau, mỗi kiểu sẽ có đặc thù riêng và sẽ cần một dung lượng bộ nhớ khác nhau để lưu trữ. Các kiểu dữ liệu cơ bản của Python bao gồm:

  • Kiểu Number (số)
  • Kiểu String (chuỗi)
  • Kiểu Tuple
  • Kiểu List (danh sách)
  • Kiểu Dictionary (từ điển)

Trong bài học này chúng ta sẽ tìm hiểu về hai kiểu dữ liệu à kiểu Number và String các kiểu dữ liệu còn lại chúng ta sẽ tìm hiểu chi tiết ở các bài học tiếp theo.

Kiểu Number (Số)

Kiểu Number (phiên âm đọc: /năm-bờ-rờ/) được sử dụng để lưu trữ các số nguyên (nguyên âm, nguyên dương, số 0), số thập phân, số thực và cả số phức (phần số phức tôi sẽ không đề cập tới trong phạm vi khoá học này một phần vì sẽ tốn khá nhiều thời gian để ôn lại kiến thức toán học một phần khác là vì để phát triển các ứng dụng thông thường chúng ta rất ít sử dụng loại số này).

Ví dụ:

year = 2017 // số nguyên dương
dollarExchangeRate = 22727.50 # số thập phân

Lưu ý: Một số tài liệu sẽ sử dụng thuật ngữ floating number (hoặc số thực dấu phảy động) thay vì số thập phân như trên. Về bản chất cách gọi này là chính xác hơn bởi vì máy tính chỉ hiểu các số nguyên (được biẻu diễn từ hệ thập phân gồm 2 số 0 và 1). Để cheat số thập phân các nhà khoa học máy tính đã sử dụng dấu phảy động (floating point) ví dụ 10.1 sẽ được biểu diễn là 101*10^-1. Ở đây để bạn dễ tiếp cận với vấn đề tôi tạm thời sử dụng thuật ngữ số thập phân.

Để sử dụng một giá trị ở hệ bát phân (Octal base) chúng ta sẽ đặt thêm chữ số 0 ở phía trước số đó, ví dụ:

myOctalNumber = 011
print(myOctalNumber) # 9

Tại sao print(myOctalNumber) hiển thị 9? Nếu bạn quên kiến thức về số học này thì cũng là chuyện thường thôi vì đã quá lâu rồi không dùng tới, tôi xin được giải thích lại để bạn hiểu:

11 (hệ bát phân) = 1*8^1 + 1 (hệ thập phân, và = 9)

Tương tự để sử dụng một giá trị ở hệ 16 (không rõ tiếng Hán-Việt là gì nhưng tiếng Anh là Hexadecimal number) thì chúng ta sẽ đặt thêm ký tự 0x (số 0 và chữ x) ở trước số đó. Ví dụ:

myHexNumber = 0x1a
print(myHexNumber) # 26

Tại sao ra 26? Phần này bạn tự tính nhé nhưng tôi cũng lưu ý hệ 16 bao gồm 16 số là 0, 1, 2...,9, a, b, c, d, e, f (Trong đó a tương ứng với 10 trong hệ thập phân, b tương ứng 11...).

Kiểu String (Chuỗi)

Kiểu string bao gồm một tập hợp các ký tự và thường được đặt bên trong cặp dấu nháy kép hoặc nháy đơn. Ví dụ:

year = "2017"

Với các chuỗi gồm nhiều dòng bạn có thể đặt trong cặp 3 dấu nháy đơn hoặc kép như đã được đề cập ở bài học trước.

Chuỗi cũng có thể không có ký tự nào:

myString = ""

Để nối chuỗi chúng ta sử dụng toán tử + (chi tiết về toán tử sẽ được đề cập ở các bài học tiếp theo):

# -*- coding: utf-8 -*-
year = "2017"
print("Năm nay là " + year)

Bạn lưu ý dòng comment đầu tiên là một chỉ thị đặc biệt được Python sử dụng để xác định kiểu mã hoá ký tự (character encoding) sử dụng trong file hiện tại (ở đây là utf-8). Chúng ta cần chỉ thị này do trong file trên chúng ta có sử dụng các ký tự UTF-8.

Khác với nhiều ngôn ngữ lập trình khác khi chúng ta sử dụng toán tử + với một chuỗi và một số thì Python sẽ không tự động chuyển đổi dữ liệu kiểu số sang kiểu chuỗi sau đó thực hiện việc nối 2 chuỗi mới, thay vào đó Python sẽ báo lỗi:

# -*- coding: utf-8 -*-
year = 2017
print("Năm nay là " + year)

Lỗi nối chuỗi và số trong Python

Thay vào đó để thực hiện việc nối chuỗi trong trường hợp trên bạn cần sử dụng hàm chuyển đổi (chi tiết về hàm sẽ được đề cập ở các bài học tiếp theo), ví dụ dùng hàm str() để đổi kiểu số sang chuỗi như sau:

# -*- coding: utf-8 -*-
year = 2017
print("Năm nay là " + str(year))

Kiểu Boolean và Kiểu Number

Kiểu dữ liệu boolean chỉ bao gồm hai giá trị True hoặc False và thường được dùng trong các phép toán về logic.

myBool = True
print(myBool) # True

Hoặc lấy một ví dụ khác như sau:

myBool = (5 < 2)
print(myBool) # False

Trong Python kiểu dữ liệu boolean là một kiểu con của kiểu Number, Điều này có nghĩa bạn có thể thực hiện các phép toán số học giữa hai giá trị thuộc hai kiểu dữ liệu này:

myBool = (5 >= 5)
print(myBool) # True
print(10 + myBool) # 11

myBool = (5 > 5)
print(myBool) # False
print(10 + myBool) # 10

Thêm Phản Hồi