Ví dụ Python thực chiến: bài toán ba cái tách (phần 3)

Bài toán 3 cái tách (tiếp tục)

Nếu chúng ta viết code sai như sau:

swaps = input()
ball_location = 1
for swap_type in swaps:

¶ if swap_type == ‘A’ and ball_location == 1:

ball_location = 2

· if swap_type == ‘A’ and ball_location == 2:

ball_location = 1

if swap_type == ‘B’ and ball_location == 2:

ball_location = 3

if swap_type == ‘B’ and ball_location == 3:

ball_location = 2

if swap_type == ‘C’ and ball_location == 1:

ball_location = 3

if swap_type == ‘C’ and ball_location == 3:

ball_location = 1

print(ball_location)

Chúng ta có thể tuyên bố rằng code này thất bại ít nhất một test case. Sau đây là một
test case như vậy

A

Nó có thể có nghĩa với chúng ta rằng quả bóng có thể di chuyển tối đa một lần mỗi tráo đổi.
Nhưng Python máy móc chạy code bạn viết, bất kể nó có phù hợp với cái chúng ta mong đợi
hay không. Trong trường hợp này, chúng ta chỉ có một swap, nên quả bóng di chuyển tối đa một
lần. Trên lần lặp đầu tiên và duy nhất của for loop. Python kiểm tra biểu thức 1. Nó là true,
nên Python thiết lập ball_location thành 2. Sau đó, Python check biểu thức 2. Vì chúng ta đã
chuyển ball_location thành 2, biểu thức này là true! Python vì vậy thiết lập ball_location
thành 1.Đầu ra của chương trình là 1 khi nó nên là 2.
Đây là một ví dụ về lỗi logic, một lỗi cái làm chương trình đi theo một logic sai và xuất ra câu
trả lời sai. Một thuật ngữ chung cho lỗi logic là bug. Khi lập trình viến làm việc qua code
của họ để fix (sửa) bugs, nó được gọi là debugging.
Nó thường lấy một test case đơn giản để chứng minh chương trình là không đúng. Khi bạn cố
gắng làm hẹp phạm vi cái gì là sai với code của bạn, đừng bắt đầu với test case dài.Test case như
vậy có thể dẫn đến là khó để thẩm định thủ công và thường thiết lập trong lúc di chuyển con
đường thực thi phức tạp cái chúng ta có thể hiểu rất ít. Ngược lại, một test case nhỏ không làm
chương trình của chúng ta làm nhiều, nếu cái nó làm là sai, thì chúng ta không phải đi xa để
tìm kiếm thủ phạm. Tạo một test case nhỏ, hướng mục tiêu không luôn dễ dàng. Nó là kĩ năng
cái bạn có thể thu thập qua thực hành.

Chia sẻ

Leave a Reply

Your email address will not be published. Required fields are marked *