2016-10-29 31 views
-2

私は、入力文字列ex:HELLOと出力:LIPPSを変更する必要がある、暗号化プログラムをPythonで作成しています。私は1つ以上の単語をタイプするときに問題を抱えています。ここで 暗号化プログラムエラー

def encr_ypt(s, n): 
    word=ord(s) 
    for i in range(len(s)): 
     if word >= 90 and word <= 97: 
      hsl = chr(63+n) 
     if word >= 122: 
      hsl = chr(95+n) 
     else: 
      hsl = chr(word+n) 
    return hsl 

st=raw_input('input string : ') 
print encr_ypt(st, 4) 

は、エラーメッセージ

input string : HELLO 
Traceback (most recent call last): 
    File "encrypt.py", line 13, in <module> 
    print encr_ypt(st, 4) 
    File "encrypt.py", line 2, in encr_ypt 
    word=ord(s) 
TypeError: ord() expected a character, but string of length 5 found 

答えて

0

ord(i) fucntionは、単一の文字を取り、その後、文字を結果のASCII値を返します。あなたのコードはエラーを返す文字列のASCII値を取得しようとしています。

また、hsl変数を使用して暗号化された文字列を格納しているため、結果の文字を文字列に追加する+=演算子を使用してください。ここで

i「はU'V'W'Z」と出力を書いています修正コード

def encr_ypt(s, n): 
    hsl = '' 
    for word in s: 
     word = ord(word) 
     if word >= 90 and word <= 97: 
      hsl += chr(63+n) 
     if word >= 122: 
      hsl += chr(95+n) 
     else: 
      hsl += chr(word+n) 
    return hsl 

st=raw_input('input string : ') 
print encr_ypt(st, 4) 
+0

何の最善の方法は、文字であるのか?/^%、出力を 'A'に戻したい –