Giải quyết bài toán các slot machines (tiếp tục)
Xem code giải bài toán ở học phần sau
https://giaiphapwebtl.vn/vi-du-python-thuc-chien-bai-toan-cac-slot-machines-phan-5/
Chương trình chứa một while loop cái lặp qua miễn là Martha còn quarters.
Mỗi lần lặp của loop chơi một slot machine. Như vậy thì, thứ đầu tiên chúng ta làm là
giảm quarters của Martha một đơn vị. Tiếp theo, chúng ta chơi slot machine hiện
tại.
Liệu chúng ta có ở trên slot machine 0? Slot machine 1? Slot machine 2? Chúng ta cần
một phát biểu if để trả lời cái đó.
Chúng ta trước tiên kiểm tra liệu chúng ta có ở trên slot machine 0. Nếu chúng ta có, thì
chúng ta tăng số chơi kể từ khi slot machine này được trả một lần. Để quyết định xem
liệu Martha có được trả, chúng ta sau đó sẽ kiểm tra machine này có được chơi chính xác
30 lần kể từ khi nó trả lần cuối cùng. Nếu nó có, thì chúng ta thiết lập lại chơi của machine
này thành 0 và tăng quarters của Martha lên 30.
Có một vài mức của nesting ở đây, vậy giành thời gian để thuyết phục bản thân bạn rằng logic
của code là đúng. Cụ thể là, chú ý rằng mọi lần chúng ta chơi machine đầu tiên, chúng ta
tăng số chơi của nó một lần. Nhưng chúng ta chỉ trả Martha sau mỗi 30 lần chơi – đó là tại
sao chúng ta có phát biểu if bên trong.
Chúng ta xử lí slot machine thứ 2 và thứ 3 chính như chúng ta xử lí cái đầu tiên. Sự khác nhau
duy nhất là rằng mỗi slot machine trả Martha sau số lần chơi của bản thân nó và trả Martha lượng
quarters của bản thân nó.
Vừa chơi một slot machine, chúng ta tăng số chơi của Martha một lần. Bây giờ tất cả cái còn lại
là di chuyển tới machine tiếp theo để rằng chúng ta ở machine đúng nếu có một lần lặp tiếp theo của
loop.
Để di chuyển tới machine tiếp theo, chúng ta tăng machine lên 1. Nếu chúng ta ở machine 0, cái này sẽ
di chuyển chúng ta tới machine 1. Nếu chúng ta ở machine 1, cái này sẽ di chuyển chúng ta tới machine 2.
Nếu chúng ta ở machine 2, cái này sẽ di chuyển chúng ta tới machine 3.
…Machine 3? Không có machine 3! Nếu chúng ta chỉ chơi machine 2, thì chúng ta
muốn bắt đầu lại ở machine 0. Để làm cái đó, chúng ta thêm một kiểm tra: nếu chúng ta chính di chuyển
tới machine 3, thì chúng ta biết rằng chúng ta đã chơi machine 2, nên chúng ta thiết lập lại machine
thành machine 0.
Khi loop chấm dứt, chúng ta biết rằng Martha không còn quarters để lại. Như một bước cuối cùng, chúng ta
cho ra câu được yêu câu, bao gồm số chơi của Martha.
Code này có rất nhiều thứ đang diễn ra: dừng khi Martha không có quarters
còn lại, theo dõi machine hiện tại, trả tiền cho Martha khi thích hợp,
và đếm các chơi của Martha. Vui lòng đệ trình code này ngay bây giờ nhưng cũng
xem xét liệu bạn có viết các phần của nó theo một cách khác hay không. Chuyện gì xảy ra
nếu bạn tăng số plays lên 1 ở đầu vòng lặp thay vì ở dưới cùng?Liệu nó có thành vấn
đề liệu bạn giảm quarters 1 đơn vị tại đỉnh loop hay đáy?
Bạn có sử dụng các biến mới để theo dõi số số lần Martha chơi từng slot machine,
thay vì điều chỉnh first, second và third? Tôi thực sự khuyến khích bạn thử nghiệm
các biến thể của những gì chúng tôi đã làm ở đây Nếu bạn thực hiện thay đổi
và code không còn vượt qua các tests, tuyệt vời! Bây giờ bạn có cơ hội học tập mới
để sửa code và tìm hiểu lý do tại sao những thay đổi của bạn lại dẫn đến hành vi
không mong muốn.