Giả sử chúng ta có một chuỗi chữ thường s và một danh sách các số nguyên khác được gọi là shift có độ dài bằng với độ dài của s. Ở đây, mỗi phần tử trong shifts[i] biểu thị nó dịch chuyển i + 1 chữ cái đầu tiên của s theo shifts[i] vị trí. Nếu dịch chuyển vượt qua 'z', nó sẽ được bao bọc thành 'a'. Chúng ta phải tìm chuỗi kết quả sau khi áp dụng ca cho s
Vì vậy, nếu đầu vào giống như s = "tomato" shifts = [2, 5, 2, 3, 7, 4], thì đầu ra sẽ là "qjcoes", vì vậy, sau khi dịch chuyển ký tự đầu tiên 2 vị trí, nó sẽ là 't . chuỗi bây giờ sẽ là "atmato" như thế cuối cùng chuỗi sẽ là "qjcoes"
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- bắt đầu. = ASCII của "a"
- độ phân giải. = danh sách ASCII của [i - bắt đầu] cho mỗi i trong s
- đối với tôi trong phạm vi kích thước của ca - 2 đến 0, giảm 1, làm
- ca[i]. = ca[i] + ca[i + 1]
- đối với tôi trong phạm vi từ 0 đến kích thước của s - 1, hãy làm
- c. =[res[i] + shifts[i]] mod 26
- res[i]. = ký tự với ASCII [c + bắt đầu]
- nối các chữ cái res thành một chuỗi và trả về
Thí dụ
Chúng ta hãy xem triển khai sau đây để hiểu rõ hơn -
def solve[s, shifts]: start = ord["a"] res = [ord[i] - start for i in s] for i in range[len[shifts] - 2, -1, -1]: shifts[i] += shifts[i + 1] for i in range[len[s]]: c = [res[i] + shifts[i]] % 26 res[i] = chr[c + start] return "".join[res] s = "tomato" shifts = [2, 5, 2, 3, 7, 4] print[solve[s, shifts]]
Đầu vào
[2, 1], 3, 2
đầu ra
qjcoes
Viết chương trình Python để tìm một chuỗi, khi mỗi ký tự được dịch chuyển [tăng ASCII] theo dịch chuyển, sẽ cho kết quả
bảng ASCII -
Input: Ascii character table Shift = 1 Output: @rbhhbg`q`bsdqs`akd Input: Ascii character table Shift = -1 Output: Btdjj!dibsbdufs!ubcmf
Giải pháp mẫu-1
Mã Python
#License: //bit.ly/3oLErEI
def test[strs,shift]:
return "".join[chr[ord[c] - shift] for c in strs]
strs = "Ascii character table"
print["Original string:"]
print[strs]
shift = 1
print['Shift =',shift]
print["A new string which, when each character is shifted [ASCII incremented] by shift in the said string:"]
print[test[strs, shift]]
strs = "Ascii character table"
print["\nOriginal string:"]
print[strs]
shift = -1
print['Shift =',shift]
print["A new string which, when each character is shifted [ASCII incremented] by shift in the said string:"]
print[test[strs, shift]]
Đầu ra mẫu
Original string: Ascii character table Shift = 1 A new string which, when each character is shifted [ASCII incremented] by shift in the said string: @rbhhbg`q`bsdqs`akd Original string: Ascii character table Shift = -1 A new string which, when each character is shifted [ASCII incremented] by shift in the said string: Btdjj!dibsbdufs!ubcmf
Sơ đồ
Trực quan hóa việc thực thi mã Python
Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực thi chương trình nói trên
Dung dịch mẫu-2
Mã Python
#License: //bit.ly/3oLErEI
def test[strs,shift]:
return "".join[chr[ord[strs[i]] - shift] for i in range[len[strs]]]
strs = "Ascii character table"
print["Original string:"]
print[strs]
shift = 1
print['Shift =',shift]
print["A new string which, when each character is shifted [ASCII incremented] by shift in the said string:"]
print[test[strs, shift]]
strs = "Ascii character table"
print["\nOriginal string:"]
print[strs]
shift = -1
print['Shift =',shift]
print["A new string which, when each character is shifted [ASCII incremented] by shift in the said string:"]
print[test[strs, shift]]
Đầu ra mẫu
Original string: Ascii character table Shift = 1 A new string which, when each character is shifted [ASCII incremented] by shift in the said string: @rbhhbg`q`bsdqs`akd Original string: Ascii character table Shift = -1 A new string which, when each character is shifted [ASCII incremented] by shift in the said string: Btdjj!dibsbdufs!ubcmf
Sơ đồ
Trực quan hóa việc thực thi mã Python
Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực thi chương trình nói trên
Trình chỉnh sửa mã Python
Có một cách khác để giải quyết giải pháp này?
Trước. Tìm các chỉ số của cặp gần nhất từ một danh sách các số
Kế tiếp. Tìm tất cả các số 5 trong các số nguyên nhỏ hơn n chia hết cho 9 hoặc 15
Mức độ khó của bài tập này là gì?
Dễ dàng trung bình khóKiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource
Theo dõi chúng tôi trên Facebook và Twitter để cập nhật thông tin mới nhất.
con trăn. Lời khuyên trong ngày
người trang trí
Trình trang trí là một đại diện thanh lịch khác của cú pháp tối giản và biểu cảm của Python
Bằng cách sử dụng các bộ trang trí, bạn có thể thay đổi hành vi hoặc kết quả của hàm mà không thực sự sửa đổi nó
Nói cách khác, các nhà trang trí trang trí các chức năng để làm cho chúng đẹp hơn theo một cách nào đó
Trình trang trí bắt đầu bằng dấu @ trong cú pháp Python và được đặt ngay trước hàm
________số 8_______đầu ra
15
Bây giờ, không chạm vào chức năng ban đầu, hãy trang trí nó để nó nhân kết quả với 100