Dịch chuyển một chữ cái sang phải bởi số đã cho Python

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 FacebookTwitter để 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

Chủ Đề