Python 入門指南 V2.00 - 範例程式碼 encrypt.py




001from random import shuffle
002
003# 定義 Encrypt 類別 
004class Encrypt:
005   # 建立 Encrypt 物件同時建立密碼表
006   def __init__(self, str=None):
007      # 設定 code
008      if str == None:
009         self.code = [chr(i) for i in 
010                      range(97, 123)]
011         shuffle(self.code)
012      else:
013         self.code = list(str)
014
015      # 設定 alph
016      self.alph = [chr(i) for i in
017                   range(97, 123)]
018
019   # 回傳密碼表字串
020   def __str__(self):
021      code = "".join(self.code)
022      return "code: " + code
023
024   # 編碼的方法
025   def toEncode(self, str):
026      # 暫存編碼結果的字串
027      result = ""
028
029      # 利用迴圈走完參數字串的所有字元
030      for i in str:
031         # 判斷該字元是否為英文小寫字母
032         # 若是英文小寫字母就進行編碼轉換
033         if i in self.code:
034            j = self.alph.index(i)
035            result += self.code[j]
036         else:
037            result += i
038
039      # 結束回傳編碼過的字串
040      return result
041
042   # 解碼的方法 
043   def toDecode(self, str):
044      # 暫存解碼結果的字串
045      result = ""
046
047      # 利用迴圈走完參數字串的所有字元
048      for i in str:
049         # 判斷該字元是否為英文小寫字母
050         # 若是英文小寫字母就進行解碼轉換
051         if i in self.code:
052            j = self.code.index(i)
053            result += self.alph[j]
054         else:
055            result += i
056
057      # 結束回傳解碼過的字串
058      return result
059
060# 測試部分
061if __name__ == '__main__':
062   e = Encrypt()
063   print()
064   print(e)
065   s1 = "There is no spoon."
066   print("Input : " + s1)
067   s2 = e.toEncode(s1)
068   print("Encode: " + s2)
069   s3 = e.toDecode(s2)
070   print("Decode: " + s3)
071   print()
072 
073# 檔名: encrypt.py 
074# 作者: Kaiching Chang 
075# 時間: July, 2014

the end

沒有留言: