Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのシーザー暗号


小文字のアルファベット文字列sがあり、オフセット番号がkであるとします。 sのすべての文字を、アルファベットに沿ってさらにkの位置にある文字に置き換える必要があります。文字がaまたはzを超えてオーバーフローすると、反対側に巻き付くことに注意する必要があります。

したがって、入力が「hello」、k =3の場合、出力は「khoor」になります

これを解決するには、次の手順に従います-

  • 関数shift()を定義します。これにはc

    かかります
  • i:=(c)のASCII-('a')のASCII

  • i:=i + k

  • i:=i mod 26

  • ASCIIから文字を返す(('a')+ iのASCII)

  • メインの方法から、次のようにします-

  • ret:=sの各文字cについて、shift(c)

    を呼び出して要素のリストを作成します。
  • retを返す

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, s, k):
      def shift(c):
         i = ord(c) - ord('a')
         i += k
         i %= 26
         return chr(ord('a') + i)

      return "".join(map(shift, s))

ob = Solution()
print(ob.solve("hello", 3))

入力

"hello", 3

出力

khoor

  1. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',

  2. 独自のシーザー暗号エンコーダーの書き方

    シーザー暗号について聞いたことがありますか ? ジュリアスシーザーはこのテクニックを使用して、敵からの秘密のメッセージを隠しました! シーザー暗号は、最も原始的な暗号化技術の1つです。 このシステムの背後にある主なアイデアは、文字を回転させることです。 x個のアルファベット上の位置 。 たとえば、x = 1の場合 、「A」は「B」になり、「C」は「D」になります。 では、これをコードでどのように実装するのでしょうか? よろしくお願いします。見た目ほど難しくはないことがわかりました。文字は数字(ASCIIコード)で表すことができるという事実を利用します。これにより、2つの数字を