Cara menggeser alfabet dengan python

Misalkan kita memiliki string huruf kecil s dan daftar bilangan bulat lain yang disebut shift yang panjangnya sama dengan panjang s. Di sini setiap elemen dalam shifts[i] menunjukkannya untuk menggeser huruf i + 1 pertama dari s dengan posisi shifts[i]. Jika menggeser menyilang 'z' maka akan dibungkus menjadi 'a'. Kita harus menemukan string yang dihasilkan setelah menerapkan shift ke s

Jadi, jika inputnya seperti s = "tomat" shift = [2, 5, 2, 3, 7, 4], maka outputnya adalah "qjcoes" jadi, setelah menggeser karakter pertama 2 tempat, itu akan menjadi 't . string sekarang akan menjadi "atmato" seperti itu akhirnya string akan menjadi "qjcoes"

Untuk mengatasi ini, kami akan mengikuti langkah-langkah ini −

  • awal. = ASCII dari "a"
  • res. = daftar ASCII dari (i - start) untuk setiap i dalam s
  • untuk i dalam rentang ukuran shift - 2 hingga 0, kurangi 1, lakukan
    • pergeseran[i]. = pergeseran[i] + pergeseran[i + 1]
  • untuk i dalam rentang 0 hingga ukuran s - 1, lakukan
    • C. =(res[i] + shift[i]) mod 26
    • res[i]. = karakter dengan ASCII (c + mulai)
  • gabungkan huruf res menjadi string dan kembali

Contoh

Mari kita lihat implementasi berikut untuk mendapatkan pemahaman yang lebih baik −

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))

Memasukkan

[2, 1], 3, 2
_

Keluaran

qjcoes

Cara menggeser alfabet dengan python


Cara menggeser alfabet dengan python

Tag sudah ada dengan nama cabang yang disediakan. Banyak perintah Git menerima nama tag dan cabang, jadi membuat cabang ini dapat menyebabkan perilaku yang tidak diharapkan. Anda yakin ingin membuat cabang ini?

Diberi sebuah String, geser balik setiap karakter sesuai dengan posisi abjadnya dengan K, termasuk pergeseran siklik

Memasukkan. test_str = 'bccd', K = 1
Keluaran. abc
Penjelasan. 1 alfabet sebelum b adalah 'a' dan seterusnya

Memasukkan. test_str = 'bccd', K = 2
Keluaran. zaab
Penjelasan. 2 huruf sebelum b adalah 'z' (dibulatkan) dan seterusnya.  

metode. Menggunakan maketrans() + upper() + daftar pemahaman + translate() + slicing

Dalam hal ini, kami membuat tabel terjemahan untuk setiap karakter ke versi K-nya menggunakan maketrans() dan slicing. Upper() digunakan untuk menangani semua karakter huruf besar, translate() digunakan untuk melakukan terjemahan sesuai dengan tabel terjemahan pencarian yang dibuat oleh maketrans()

Python3




# Python3 code to demonstrate working of

# Reverse Shift characters by K_

# using maketrans() + upper() + list comprehension + translate() + slicing

 

# initializing string_

test_str= 'GeeksForGeeks'

 

# printing original String

print# Python3 code to demonstrate working of0# Python3 code to demonstrate working of1 # Python3 code to demonstrate working of2 # Python3 code to demonstrate working of3# Python3 code to demonstrate working of4

 

# Python3 code to demonstrate working of5

# Python3 code to demonstrate working of6= # Python3 code to demonstrate working of8

 

# Python3 code to demonstrate working of9= # Reverse Shift characters by K1

 

# Reverse Shift characters by K_2

# Reverse Shift characters by K3= # Reverse Shift characters by K5

 

# Reverse Shift characters by K_6

# Reverse Shift characters by K7= # Python3 code to demonstrate working of3# using maketrans() + upper() + list comprehension + translate() + slicing0# using maketrans() + upper() + list comprehension + translate() + slicing1# using maketrans() + upper() + list comprehension + translate() + slicing2# Python3 code to demonstrate working of2 # using maketrans() + upper() + list comprehension + translate() + slicing4# using maketrans() + upper() + list comprehension + translate() + slicing1# using maketrans() + upper() + list comprehension + translate() + slicing6

 

# using maketrans() + upper() + list comprehension + translate() + slicing_7

# using maketrans() + upper() + list comprehension + translate() + slicing8= # Python3 code to demonstrate working of3# initializing string1# using maketrans() + upper() + list comprehension + translate() + slicing1# using maketrans() + upper() + list comprehension + translate() + slicing_5_______2# Python3 code to demonstrate working of2 # initializing string5# using maketrans() + upper() + list comprehension + translate() + slicing1# using maketrans() + upper() + list comprehension + translate() + slicing6

Bagaimana Anda menggeser alfabet?

Sandi Pergeseran Caesar adalah jenis sandi substitusi abjad mono di mana setiap huruf teks biasa digeser sejumlah tempat ke bawah alfabet. For example, with a shift of 1, letter A would be replaced by letter B, letter B would be replaced by letter C, and so on.

Bagaimana cara mendapatkan posisi alfabet dengan Python?

Setiap huruf memiliki nilai ASCII yang dapat direpresentasikan dalam bentuk biner. Melakukan bitwise dan nilai ini dengan angka 31 akan memberikan posisi huruf dalam abjad.

Bagaimana Anda mendaftar A hingga Z dengan Python?

Cara termudah untuk memuat daftar semua huruf abjad adalah dengan menggunakan string. ascii_letters , string. ascii_lowercase , dan string. instance ascii_uppercase .