Giải quyết bài toán
Bây giờ rằng chúng ta có một vài thực hành sử dụng các while loops để lặp qua miễn là
có nhiều nút hơn để xử lí, và sử dụng slicing cho thao tác xử lí string, chúng ta đã sẵn
sàng giải quyết bài toán Song Playlist. Code như sau:
songs = ‘ABCDE’
button = 0
1 while button != 4:button = int(input())
presses = int(input())
2 for i in range(presses):if button == 1:
3 songs = songs[1:] + songs[0]
elif button == 2:
4 songs = songs[-1] + songs[:-1]
elif button == 3:
5 songs = songs[1] + songs[0] + songs[2:]
6 output = ”
for song in songs:output = output + song + ‘ ‘
7 print(output[:-1])
While loop tiếp tục miễn là nút 4 không được ấn 1. Trên mỗi lần lặp của while loop, chúng ta đọc số
nút và sau đó đọc số lần cái nút này được ấn.
Bây giờ, nested trong while loop bên ngoài, chúng ta cần lặp qua một lần mỗi ấn nút. Giữ tất cả dạng loop
trong tâm trí khi bạn quyết định cái nào để sử dụng. Ở đây, một range for loop là lựa chọn tốt nhất 2 vì nó
là cách thức dễ nhất để lặp chính xác số lần chúng ta chỉ ra.
Hành vi bên trong range for loop phụ thuộc vào nút nào được ấn. Chúng ta vì vậy sử dụng một phát biểu if để
kiểm tra số nút và điều chỉnh playlist tuỳ theo. Nếu button 1 được ấn, chúng ta sử dụng slicing để di chuyển
song đầu tiên tới cuối playlist 3. Nếu button 2 được ấn, chúng ta sử dụng slicing để di chuyển song cuối cùng
tới bắt đầu của playlist 4. Để làm cái đó, chúng ta bắt đầu với kí tự tại cuối phải của string và sau đó sử
dụng slicing để gắn tất cả các kí tự khác.Cho button 3, chúng ta cần điều chỉnh playlist để rằng hai songs đầu
tiên tráo đổi vị trí. Chúng ta xây dựng một string mới với kí tự ở chỉ mục 1, sau đó kí tự ở chỉ mục 0, và sau
đó tất cả các kí tự bắt đầu ở chỉ mục 2 5.
Một khi chúng ta ra khỏi while loop, chúng ta cần cho ra các songs, với một khoảng trắng giữa mỗi cặp songs. Chúng
ta không thể chỉ cho ra songs, vì cái đó không có các khoảng trắng. Thay vào đó, chúng ta xây dựng một string đầu
ra cái có các khoảng trắng phù hợp. Để làm cái đó, chúng ta bắt đầu với string rỗng 6 và sau đó sử dụng một for loop
để nối mỗi song và một khoảng trắng. Một phiền toái nhỏ là rằng cái này thêm một khoảng trắng tại cuối string, sau song
cuối cùng, và chúng ta không muốn cái đó. Chúng ta vì vậy sử dụng slicing để loại bỏ kí tự khoảng trắng cuối cùng này 7.