2017-03-11 12 views
0

Python:文字の長さをnの8桁のキーで暗号化する方法。Python:文字の長さ 'x'の文字列を8桁の数字で暗号化する方法

私のコードは以下の通りですが、キー(またはキーの長さ)の8桁までの文字列の長さだけを暗号化します。それが終わるとキーをリセットして残りの文字列を続けなければなりません。本当にこのことに固執しています。どんな指導や助けも本当に感謝しています。

def code_char(c,key): 
    c = ord(c) 
    if c >= 65 and c <= 90: 
     c = c + key 
     if c <= 90: 
      return chr(c)    
     while c > 90: 
      c = c - 26 
      return chr(c) 
    elif c >= 97 and c <= 122: 
     c = c + key 
     if c <= 122: 
      return chr(c)     
     while c > 122: 
      c = c - 26 
      return chr(c) 

def code_block(word, key): 
    newWord = "" 
    for char, num in zip(word, key): 
     newWord = newWord + code_char(char, int(num))   
     return newWord 

print(code_block('abcdefghijklmn','111111111')) 

助けてくれてありがとうございます - 私はこれのための組み込み関数を使用することは許されていないはずです。

+0

'使用while'' else'が奇数の選択肢があるのではなく。また、 'if'を使ってモジュール式算術を使うのではなく、コードを不必要に長くします。 –

+0

ヘッドアップありがとう。後で問題になるのだろうか、それとも不必要なのだろうか? –

+0

あなたが本当に他のものを意味しているときはしばらく使うと、遅かれ早かれ複雑なコードが問題になります。また、ここではモジュラ演算を使用しているので、%を使用することで明示的にすることもできます。 –

答えて

0

ループを開始する前にの長さがkeyと一致するようにして、wordの長さにすることができます。

def code_block(word, key): 
    newWord = "" 
    work_key = (key * ((len(word)/len(key))+1))[:len(word)] 
    for char, num in zip(word, work_key): 
     newWord = newWord + code_char(char, int(num))   
    return newWord 

がここにアクションでそれを参照してください:Repeat string to certain length

から非常に優れたソリューションを使用すると、あなたのようにそれを書くことができhttps://eval.in/752994

関連する問題