2

ここでウィンクルソンは、 http: //singpath.appspot.comの問題セットの質問に対する別の質問をします。私は初心者プログラマーであり、できる限りガイダンスを求めています。とにかく私はここでこの質問に出くわしました、そして私はEVERY.SINGLE.LETTERを比較することによって時間を無駄にすることなくどのように進むべきかわかりません。ifステートメントで。したがって、この質問のコーディングを削減するためのヒント/解決策があればいいのですが。これまでに持っているものを投稿します(あまりありません)。前もって感謝します!

質問:


換字式暗号

文字列の暗号化と復号化に使用できるプログラムを作成します。この関数は、エンコードする文字列と、アルファベットの新しい順序を示す文字列を入力する必要があります。2番目の文字列には、アルファベットのすべての文字が新しい順序で含まれています。この順序は、交換する文字を示します。2番目の文字列の最初の文字は、最初の文字列のすべてのaを置き換える必要があります。2番目の文字列の3番目の文字は、最初の文字列のすべてのcを置き換える必要があります。ソリューションはすべて小文字にする必要があります。句読点と数字に注意してください(これらは変更しないでください)。

例(呼び出し):

>>> encrypt('hello banana','qwertyuiopasdfghjklzxcvbnm')
'itssg wqfqfq'

>>> encrypt('itssg wqfqfq','kxvmcnophqrszyijadlegwbuft')
'hello banana'

>>> encrypt('gftw xohk xzaaog vk xrzxnkh','nxqlzhtdvfepmkoywrjiubscga')
'this code cannot be cracked'

>>> encrypt('mkhzbc id hzw pwdh vtcgxtgw ube fbicg ozth kbx tew fbicg','monsrdgticyxpzwbqvjafleukh')
'python is the best language for doing what you are doing'

私のコード:


def encrypt(s, realph):
    
    alph = 'abcdefghijklmnopqrstuvwxyz' #Regular Alphabet
    news = '' #The decoded string   
        
    #All comparison(s) between realph and alph    
        
    for i in range(len(realalph)):        
        
        #Comparison Statement here too.
        news = ''.join(alph) 
    
    return news

ご覧のとおり、これは明らかに失敗した擬似コードと同等です...いつものように、提案や解決策は素晴らしいでしょう!前もって感謝します!-ウィンクルソン

4

3 に答える 3

4

これが翻訳ソリューションです。

from string import maketrans

def encrypt(s, scheme):
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    translation = maketrans(alphabet, scheme)
    return s.translate(translation)

translate文字列には、1つの文字を他の文字に切り替えることができるメソッドが組み込まれています。信じられないほどきびきびしていて、とても便利です。

于 2012-11-21T20:01:50.830 に答える
1

これが私がそれをする方法です:

  1. 文字列内のすべての文字を繰り返し処理します。
  2. アルファベットでその文字のインデックスを見つけます。それを保存。
  3. 同じインデックスにある新しいアルファベットから文字を取得します。
  4. 文字列に追加しますnews

擬似コード:

output = ''

for character in your_string:
    index = index of character in original_alphabet
    new_character = new_alphabet[character]

    add new_character to output
于 2012-11-21T19:46:42.317 に答える
1

map ['src_letter']=>'dst_letter'を作成します。翻訳もあります:辞書マッピングから文字列内の文字を置き換えます

于 2012-11-21T19:48:01.907 に答える