Biến số#
Giới thiệu#
Biến dùng để lưu trữ dữ liệu và cho phép bạn tái sử dụng và thao tác với dữ liệu đó trong suốt chương trình. Python là một ngôn ngữ kiểu động, nghĩa là bạn không cần phải khai báo kiểu dữ liệu của biến một cách rõ ràng. Thay vào đó, kiểu dữ liệu sẽ được tự động suy luận dựa trên giá trị được gán cho nó. Ví dụ:
angle = 90 # angle is an integer
dist = "Distance: " # dist is a string
steps = 2.5 # steps is a float
Python cũng là ngôn ngữ lập trình kiểu mạnh, có nghĩa là bạn không thể thực hiện các phép toán trên các kiểu dữ liệu không tương thích mà không cần chuyển đổi chúng một cách rõ ràng. Ví dụ:
blocks = 2 # blocks is an integer
rings = "4" # rings is a string
result = blocks + rings # Creates a TypeError
Để giải quyết những vấn đề như vậy, bạn phải chuyển đổi kiểu dữ liệu một cách rõ ràng, nếu cần thiết:
blocks = 2 # blocks is an integer
rings = "4" # rings is a string
# Convert rings to an integer before adding
result = int(rings) + blocks
API này giải thích các kiểu biến thông dụng trong Python. Mặc dù không phải là danh sách đầy đủ, nhưng nó bao gồm các kiểu biến mà bạn có nhiều khả năng sử dụng trong thực tế.
Biến cục bộ — Được khai báo bên trong một hàm và chỉ được sử dụng trong phạm vi đó; tốt nhất cho các giá trị tạm thời hoặc riêng biệt.
Biến toàn cục — Được khai báo bên ngoài bất kỳ hàm nào và được sử dụng trong toàn bộ dự án; thích hợp để chia sẻ dữ liệu giữa các hàm.
Số nguyên — Số nguyên dương được sử dụng để đếm, khoảng cách hoặc bất cứ thứ gì không có phần thập phân.
Float — Số có dấu thập phân, hữu ích cho các phép đo hoặc tính toán chính xác.
Chuỗi — Giá trị văn bản, được sử dụng cho thông báo, nhãn hoặc hiển thị đầu ra dễ đọc.
Boolean —
TruehoặcFalsegiá trị cho logic và ra quyết định.NoneType — Biểu thị sự vắng mặt của một giá trị trong Python.
Phạm vi — Tự động tạo ra các dãy số, thường được sử dụng trong các vòng lặp.
Danh sách — Một tập hợp các mục có thể thay đổi; thích hợp để lưu trữ các nhóm giá trị như đối tượng hoặc các giá trị đọc cảm biến.
Danh sách 2D — Danh sách các danh sách; lý tưởng để biểu diễn các hàng, lưới hoặc dữ liệu giống như bảng.
Tuple — Một chuỗi giá trị cố định không thể thay đổi; hữu ích cho dữ liệu được nhóm lại và không thay đổi.
Khai báo và gán giá trị cho một biến#
Để tạo một biến, chỉ cần gán giá trị cho một tên bằng cách sử dụng toán tử =:
distance = 100
Khi đặt tên biến, cần tuân thủ các quy tắc sau:
Tên không được chứa các ký tự đặc biệt (ví dụ: dấu chấm than).
Tên không được bắt đầu bằng số.
Tên không được chứa khoảng trắng.
Tên này không được là từ khóa dành riêng trong VEXcode (ví dụ: Drivetrain).
Local Variables#
Biến cục bộ được định nghĩa bên trong một hàm hoặc khối mã. Chúng chỉ có thể truy cập được trong phạm vi của hàm hoặc khối mã đó và không hiển thị bên ngoài.
def show_local():
# This variable only exists inside this function
message = "I'm local!"
brain.screen.print(message)
show_local()
Biến cục bộ thường được sử dụng để lưu trữ các giá trị tạm thời chỉ có liên quan trong một hàm hoặc một phần cụ thể của chương trình.
Global Variables#
Biến toàn cục được định nghĩa bên ngoài bất kỳ hàm hoặc khối lệnh nào. Chúng có thể được truy cập và đọc ở bất kỳ đâu trong chương trình, kể cả bên trong các hàm.
Lưu ý: Biến toàn cục có thể được sử dụng ở bất kỳ đâu trong dự án của bạn. Điều này có thể hữu ích, nhưng cũng có thể khiến việc tìm lỗi trở nên khó khăn hơn. Nếu giá trị thay đổi, bạn có thể cần kiểm tra nhiều phần của dự án để xem nó đã thay đổi ở đâu. Hãy sử dụng biến cục bộ khi chỉ có một hàm cần giá trị đó.
# The variable is defined outside a function
message = "I'm global!"
def show_global():
# You can access 'message' inside a function
brain.screen.print(message)
brain.screen.next_row()
show_global()
# And you can access 'message' outside a function
brain.screen.print(message)
Theo mặc định, việc gán giá trị cho một biến bên trong hàm sẽ tạo ra một biến cục bộ. Để sửa đổi một biến toàn cục bên trong hàm, bạn phải khai báo rõ ràng biến đó bằng từ khóa global.
# Define the global variable
count = 0
def increase_count():
# Use the global keyword to let you modify the
# global variable
global count
count = count + 1
brain.screen.print("Count: {}".format(count))
brain.screen.next_row()
increase_count()
increase_count()
Các loại dữ liệu#
Biến trong Python có thể lưu trữ nhiều loại dữ liệu khác nhau, mỗi loại phù hợp với các trường hợp sử dụng khác nhau. Dưới đây là các loại dữ liệu được sử dụng phổ biến nhất:
Integer#
Số nguyên là số dương hoặc số âm.
distance = 100
# Move the robot forward for the variable value in mm
drivetrain.drive_for(FORWARD, distance, MM)
# Add to the variable and move forward the new value,
# for 200mm total
wait(1, SECONDS)
distance = distance + 100
drivetrain.drive_for(FORWARD, distance, MM)
Float#
Số thực (float) là số có dấu thập phân.
# Store a value with decimal points
raw_value = 0.88
# Print the decimal value as a percentage
brain.screen.print(raw_value * 100, "%")
String#
Chuỗi ký tự là một dãy các ký tự thường được sử dụng cho văn bản.
# Set the variable to a string then print the string
message = "Ready!"
brain.screen.print(message)
Lưu ý: Chuỗi ký tự phải luôn được đặt trong dấu ngoặc kép giống nhau, có thể là dấu ngoặc đơn (’) hoặc dấu ngoặc kép (”). Bạn có thể sử dụng một trong hai kiểu, nhưng dấu mở và dấu đóng phải giống nhau.
Boolean#
Giá trị Boolean biểu thị True hoặc False (sai).
# Set the state of the variable
delivered = False
# Print different messages depending on the Boolean.
if delivered:
brain.screen.print("Package delivered!")
else:
brain.screen.print("Delivering...")
Các giá trị Boolean có thể được thay đổi ở bất kỳ thời điểm nào trong dự án.
# Print the value of the delivered variable
delivered = True
brain.screen.print(delivered)
wait(2,SECONDS)
# Clear the screen and print the value of the variable again
brain.screen.clear_screen()
delivered = False
brain.screen.print(delivered)
NoneType#
NoneType biểu thị sự vắng mặt của một giá trị trong Python.
# Write what the robot's task should be as a string
current_task = None
# Check if a task is assigned
if current_task is None:
brain.screen.print("No task!")
else:
brain.screen.print("Task: {}".format(current_task))
Range#
Một dãy số là một dãy số, thường được sử dụng trong các vòng lặp để tạo ra các dãy số. Nó tuân theo định dạng:
range(start, stop, step)
Các thành phần |
Sự miêu tả |
|---|---|
|
Tùy chọn. Giá trị bắt đầu được bao gồm (chuỗi bắt đầu từ đây). Giá trị mặc định là 0. |
|
Giá trị dừng là độc quyền (chuỗi dừng trước số này). |
|
Tùy chọn. Bước này xác định mức độ tăng (hoặc giảm) của mỗi số. Mặc định là 1. |
# Drive and turn 4 times to move in a square
for index in range(4):
drivetrain.drive_for(FORWARD, 100, MM)
drivetrain.turn_for(RIGHT, 90)
# Count by 2 starting at 1 and ending before 12
for index in range(1, 12, 2):
# Print the values on the screen with each loop
brain.screen.print(index)
brain.screen.next_row()
List#
Một danh sách lưu trữ một nhóm các mục trong một biến duy nhất. Bạn có thể thêm mục, xóa mục, thay đổi mục hoặc sử dụng từng mục một trong dự án của mình. Danh sách rất hữu ích khi bạn muốn giữ các giá trị liên quan lại với nhau, chẳng hạn như các giá trị cảm biến, màu sắc hoặc tên đối tượng. Danh sách được tạo bằng cách sử dụng dấu ngoặc vuông [].
# Define a list of colors
colors = ["Red", "Green", "Blue", "Purple"]
# Repeat for the number of items in the colors list
for index in colors:
# Print each color in order
brain.screen.print(index)
brain.screen.next_row()
Sử dụng lệnh append để thêm mục vào danh sách.
# Define a list of colors
colors = ["Red", "Green", "Blue", "Purple"]
# Append a new color to the list
colors.append("Yellow")
# Repeat for the number of items in the colors list
for index in colors:
# Print each color in order
brain.screen.print(index)
brain.screen.next_row()
2D List#
Danh sách 2 chiều, hay danh sách các danh sách, thường được sử dụng để biểu diễn lưới, bảng hoặc ma trận. Mỗi danh sách con đại diện cho một hàng hoặc một nhóm dữ liệu cụ thể.
# Assign the values in the matrix 2D list
matrix = [
["A", 1, "Red"],
["B", 2, "Orange"],
["C", 3, "Yellow"]
]
# Loop through each row
for row in matrix:
# Loop through each column in the row
for element in row:
brain.screen.print(element, ", ")
brain.screen.next_row()
Bạn có thể chỉnh sửa các phần tử cụ thể hoặc thậm chí toàn bộ danh sách con trong một danh sách 2D:
# Assign the values in the matrix 2D list
matrix = [
["A", 1, "Red"],
["B", 2, "Orange"],
["C", 3, "Yellow"]
]
# Modify the color (in column 2) in row 0
matrix[0][2] = "Blue"
# Print the modified row from the matrix 2D list
brain.screen.print(matrix[0])
Tuple#
Một tuple là một chuỗi các mục không thể thay đổi sau khi chúng được tạo ra. Chúng thường được sử dụng để nhóm các giá trị có liên quan lại với nhau.
# Define a tuple
set_1 = (100, "Left")
# Print the tuple
brain.screen.print(set_1)
Các bộ dữ liệu được tạo bằng cách sử dụng dấu ngoặc đơn () thay vì dấu ngoặc vuông [].