Toán tử Mod Python và bài toán các slot machines (phần 7)

Toán tử Mod (tiếp tục)

Hành vi này là hữu dụng cho đếm lên tới một số chỉ ra và sau đó tạo chu kì quay trở lại
tới 0. Nó chính xác là hành vi cái chúng ta cần khi chơi các slot machines: chúng ta chơi
slot machine 0, sau đó là 1, sau đó là 2, sau đó là 0, sau đó là 1, sau đó là 2, sau đó
là 0, sau đó là 1 …vv..(Đây là lí do khác tại sao tôi sử dụng 0,1 và 2 hơn là các giá
trị khác để tham chiếu đến các slot machines).
Giả sử rằng biến plays tham chiếu đến số lần cái Martha đã chơi. Để quyết định machine tiếp
theo sẽ chơi (0,1, hay 2), chúng ta có thế sử dụng toán tử %. Ví dụ, giả sử rằng Martha đã chơi
một slot machine trước đó và chúng ta muốn biết cái nào cô ta sẽ chơi tiếp theo. Cô ta sẽ
chơi slot machine 1 tiếp theo và toán tử % thông báo cho chúng ta rằng:

>>> plays = 1
>>> plays % 3
1

Nếu Martha đã chơi 6 lần trước đó, thì cô ta chơi các slot machines 0,1,2,0,1,2. Slot machine
tiếp theo cô ta sẽ chơi là machine 0. Và, khi cô ta chơi tất cả 3 machine hai lần, với không chơi
khác vượt quá cái đó, toán tử % cung cấp cho chúng ta 0:

>>> plays = 6
>>> plays % 3
0

Như một ví dụ cuối cùng, giả sử rằng Martha đã chơi 11 lần trước đó. Cô ta thực hiện 3 chu kì hoàn
chỉnh: 0,1,2,0,1,2,0,1,2. Đó là 9 chơi. Hai chơi còn lại đặt Martha lên slot machine 2 cho chơi tiếp
theo của cô ta:

>>> plays = 11
>>> plays % 3
2

Đó là, chúng ta có thể định hình ra slot machine sẽ chơi mà không duy trì công khai một biến machine.
Chúng ta cũng có thể sử dụng % để đơn giản hoá logic của việc quyết định liệu chơi tiếp theo trên slot
machine hiện tại có trả cho Martha. Xem xét slot machine đầu tiên. Trong code giải toán trên, chúng ta đếm số chơi kể
từ khi slot machine trả. Nếu số đó là 35, thì chúng ta trả cho Martha và thiết lập lại đếm thành 0. Nhưng
không cần thiết lập lại đếm nếu chúng ta sử dụng toán tử %. Chúng ta có thể chính kiểm tra liệu slot machine
đã được chơi một số nhân của 35 lần và trả cho Martha nếu như vậy. Để test liệu một số có là số nhân của 35,
chúng ta có thể sử dụng toán tử %. Một số là một số nhân của 35 nếu chia nó cho 35 không có số dư:

>>> first = 35
>>> first % 35
0
>>> first = 48
>>> first % 35
13
>>> first = 70
>>> first % 35
0
>>> first = 175
>>> first % 35
0

Chúng ta có thể chính kiểm tra first % 35 == 0 để quyết định liệu sẽ trả cho Martha. Tôi đã cập nhật
code giải toán trên để sử dụng toán tử %. Code mới ở dưới:

quarters = int(input())
first = int(input())
second = int(input())
third = int(input())
plays = 0
while quarters >= 1:
1¶ machine = plays % 3
quarters = quarters – 1
if machine == 0:
first = first + 1
· 2 if first % 35 == 0:
quarters = quarters + 30
elif machine == 1:
second = second + 1
if second % 100 == 0:
quarters = quarters + 60
elif machine == 2:
third = third + 1
if third % 10 == 0:
quarters = quarters + 9
plays = plays + 1
print(‘Martha plays’, plays, ‘times before going broke.’)

Tôi vừa sử dụng % theo 2 cách mô tả trong phần này: để quyết định machine hiện tại dựa trên số chơi 1 và để
quyết định liệu Martha có được trả trên một chơi (ví dụ tại 2).
Liên quan % với trả về số dư của phép chia che giấu tính linh động của nó. Bất cứ khi nào bạn cần đếm trong
một chu kì (0,1,2,0,1,2) xem xét liệu bạn có thể sử dụng % để đơn giản hoá code của bạn.

Chia sẻ

Leave a Reply

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