Khác với Java hay C#, Python không có câu lệnh switch tích hợp sẵn. Điều này có nghĩa là bạn không thể đánh giá biểu thức switch mà không phải viết mã mô phỏng câu lệnh "switch...case".
Trong hướng dẫn này, chúng ta thảo luận cách viết "switch...case" trong Python, và đi qua hai ví dụ câu lệnh switch giả để bạn học cách viết trong mã.
Switch Statement: Tóm tắt nhanh
Câu lệnh switch cho phép chọn một trong nhiều khối mã để chạy. Chúng là cách đánh giá nhiều biểu thức trong chương trình.
Switch statement hoạt động bằng cách đánh giá biểu thức switch và so sánh kết quả với giá trị trong các câu lệnh "case". Nếu tìm thấy khớp, khối mã tương ứng chạy. Nếu không, không có gì xảy ra.
Tùy chọn, từ khóa "default" dùng để chạy khối mã nếu không tìm thấy câu lệnh khớp với biểu thức cụ thể.
Python Switch Statement: Trả về giá trị riêng lẻ
Viết chương trình chuyển giá trị số thành ngày trong tuần.
Đầu tiên, yêu cầu người dùng nhập số muốn chuyển thành ngày viết:
convert_to_day = int(input("Insert a day of the week: "))
Chúng ta chuyển giá trị người dùng nhập thành số nguyên. Chúng ta sẽ thảo luận tại sao cần thiết sau.
Tiếp theo, định nghĩa từ điển. Từ điển này chứa tất cả ngày trong tuần. Mỗi khóa lưu ngày như số và mỗi giá trị lưu ngày viết ra (ví dụ: Tuesday):
days = {
1: "Monday",
2: "Tuesday",
3: "Wednesday",
4: "Thursday",
5: "Friday",
6: "Saturday",
7: "Sunday"
}
Có bảy khóa và giá trị trong từ điển. Khóa "1" đại diện "Monday" và cứ thế đến ngày cuối tuần.
Tiếp theo, dùng phương thức get() của từ điển truy xuất mục tương ứng với giá trị người dùng nhập:
day_as_written = days.get(convert_to_day, "There is no day with this numerical value.") print(day_as_written)
Chúng ta chuyển giá trị người dùng nhập thành số nguyên để dùng trong câu lệnh get(). Nếu không có khóa bằng giá trị "convert_to_day" lưu, mã trả về "There is no day with this numerical value."
Nếu người dùng nhập "1", mã đánh giá:
days[1]
Điều này truy xuất giá trị liên kết khóa "1" trong danh sách.
Chạy mã:
Insert a day of the week: 1 Monday
Mã chuyển thành công số người dùng nhập thành chuỗi. Chạy mã với ngày không tồn tại:
Insert a day of the week: 8 There is no day with this numerical value.
Mã hoạt động ngay cả khi người dùng nhập giá trị không hợp lệ.
Python Switch Statement: Gọi hàm
Chúng ta có thể dùng cú pháp này để gọi hàm trong mã. Chúng ta sẽ xây dựng ứng dụng hiển thị thông tin danh sách mua hàng tại cửa hàng bánh mì kẹp.
Đầu tiên, định nghĩa danh sách mua hàng:
purchases = [2.50, 2.50, 2.75, 3.90, 5.60, 2.40]
Tiếp theo, định nghĩa ba hàm. Các hàm này tính toán:
- Số lượng mua hàng trong danh sách
- Giá trị mua hàng trung bình
- Mua hàng lớn nhất
Định nghĩa các hàm:
def number_of_purchases():
total = len(purchases)
print(total)
def average_value():
average = sum(purchases) / len(purchases)
print(average)
def largest_purchase():
largest = max(purchases)
print(largest)
Bây giờ đã định nghĩa các hàm, bắt đầu viết câu lệnh switch giả. Giống ví dụ đầu, bắt đầu bằng yêu cầu người dùng nhập giá trị. Giá trị này nên tương ứng với một hàm.
print("[1] Display the number of purchases made today")
print("[2] Display the average value of all the purchases made today")
print("[3] Display the largest purchase made today")
to_run = int(input("What would you like to do? "))
Mã in ba thông báo. Mỗi thông báo báo cho người dùng một tùy chọn. Mã sau đó yêu cầu nhập giá trị. Chúng ta chuyển giá trị này thành số để dùng sau.
Tiếp theo, định nghĩa từ điển ánh xạ hàm với số:
options = {
1: number_of_purchases,
2: average_value,
3: largest_purchase
}
Giá trị "1" ánh xạ hàm "number_of_purchases", "2" ánh xạ "average_value", "3" ánh xạ "largest_purchase".
Tiếp theo, dùng get() chọn hàm chương trình nên chạy:
function_to_execute = options.get(to_run) function_to_execute()
Mã này truy xuất hàm từ từ điển chúng ta muốn thực thi. Chúng ta không chỉ định giá trị thứ hai trong get() vì cần gọi hàm để mã hoạt động. Điều này có nghĩa là nếu người dùng nhập giá trị không hợp lệ, mã trả về lỗi. Có cách xử lý hành vi này nhưng nằm ngoài phạm vi hướng dẫn.
Chạy mã:
[1] Display the number of purchases made today [2] Display the average value of all the purchases made today [3] Display the largest purchase made today What would you like to do? 3 5.6
Chọn tùy chọn 3. Mã in thành công mua hàng lớn nhất ngày đó. Thử tùy chọn 2:
[1] Display the number of purchases made today [2] Display the average value of all the purchases made today [3] Display the largest purchase made today What would you like to do? 2 3.275
Mã trả về giá trị trung bình mua hàng trong danh sách.
Kết luận
Mặc dù Python không có switch statement tích hợp, bạn có thể tạo một dùng từ điển và phương thức get().
Switch statement hữu ích nếu muốn đánh giá biểu thức đối với nhiều kết quả tiềm năng.
Bạn có thể viết switch giả truy xuất giá trị từ từ điển tùy theo khóa chỉ định. Bạn cũng có thể viết switch giả truy xuất hàm từ từ điển dựa trên khóa cụ thể tham chiếu.
Bây giờ bạn đã sẵn sàng xây dựng switch statement riêng trong Python như coder chuyên nghiệp!