2016-09-14 4 views
-2

Python関数に文字列を作成して、コードの暗号化と復号化が正しく機能していることを確認しました。以下は私のコードです。Pythonの文字列を使ってCaesar Cipherの "encryption"と "decryption"をチェックする

def encrypt1(): 
    plain1 = input('Enter plain text message: ') 
    cipher = '' 

    for each in plain1: 
     c = (ord(each)+3) % 126 

     if c < 32: 
      c+=31 

    cipher += chr(c) 

    print ("Your encrypted message is:" + cipher) 

encrypt1() 

1.)私は、例えば(私のコードが動作するかどうか、私は入力セット、定数文字列が欲しかった入力チェックを取得する必要がありますどのようにエラー

2)「タブとスペースの使用に矛盾」を取得します、出会いを入力し、正しい入力を得る、など)

+0

は、あなただけのこの行 '暗号をインデントする必要があります+ = chr(c) '。また、引数 'plain1'を関数に渡すことは、' input() 'を使って上書きするので意味がありません。 Pythonのバージョンはこれと関係がありません –

+0

...あなたに質問がありますか? – jonrsharpe

答えて

1

あなたのコードのほとんどは大丈夫ですが、私が指摘してきたいくつかの問題があります。

  1. あなたのインデントがオフになっているが。行cipher += chr(c)は、forループのものと一致するように字下げする必要があります。
  2. 関数encypt1()はパラメータを取るべきではありません。メソッド自体にplain1を設定して、そこに宣言できるようにします。
  3. 小文字だけを扱う場合は、%123( 'z'の値)を実行する必要があり、if節はc < 97をチェックする必要があります。あなたがしていることは、印刷可能なasciiをラップしたい場合は問題ありません。

これは与える:

def encrypt1(): 
     plain1 = input('Enter plain text message: ') 
     cipher = '' 
     for each in plain1: 
      c = (ord(each)+3) % 126 
      if c < 32: 
       c+=31 
      cipher += chr(c) 
     print ("Your encrypted message is:" + cipher) 

を使用すると、複数の文字列でこれをテストすることができるようにしたいので、あなたが関数のパラメータとしてplain1渡したいと思うだろう。しかし、パラメータが関数に渡されない場合、ユーザーはplain1を入力できるようにする必要があります。そのために、私はデフォルトのパラメータを提案します。あなたができる

ので
def encrypt1(plain1=""):  # if no argument is passed in, plain1 will be "" 
    if not plain1:    # check if plain1 == "" and if so, read input from user 
     plain1 = input('Enter plain text message: ') 
    cipher = '' 
    for each in plain1: 
     c = (ord(each)+3) % 126 
     if c < 32: 
      c+=31 
     cipher += chr(c) 
    return cipher    # rather than printing the string, return it instead 

はこれをテストするには:以下のコメントのコードを見て出力できます

test_strings = ['hello world', 'harambe', 'Name', 'InputString'] 

for phrase in test_strings: 
    print ("Your encrypted message is:" + encrypt1(phrase)) 

Your encrypted message is:khoor#zruog 
Your encrypted message is:kdudpeh 
Your encrypted message is:Qdph 
Your encrypted message is:LqsxwVwulqj 
+0

あなたの答えは私のエラーの問題を解決しますが、文字列の入力方法はまだ分かりません:p –

+0

@YeoZheYong Ahあなたの質問に編集を見ただけです。文字列を入力することはどういう意味ですか?何とか複数の文字列でこれをテストする方法が欲しいですか? – gowrath

+0

はい、申し訳ありません私自身のばかげている場合、私たちの大学のモジュールは、ほとんどPythonのほんの少しでhtmlとjavascriptが含まれているので、私のような経験の浅い人はむしろPython/PHPの質問が出てくると混乱に終わる –

関連する問題