当前位置:   article > 正文

5.4 文本分析与加密_ndwjl csdn

ndwjl csdn

目录

第1关 统计字符数量

第2关 统计单词数量

第3关 计算偏移量

第4关 凯撒密码加密


第1关 统计字符数量

  1. import string
  2. # 读文件,返回字符串
  3. def read_file(file):
  4. ##################Begin##################
  5. with open(file, 'r', encoding='utf-8') as f:
  6. return f.read()
  7. ###################End###################
  8. # 返回大写字母、小写字母、数字、空格和其他字符的数量
  9. def classify_char(txt):
  10. ##################Begin##################
  11. upper, lower, digit, space, other = 0, 0, 0, 0, 0
  12. for ch in txt:
  13. if ch.islower():
  14. lower = lower + 1
  15. elif ch.isupper():
  16. upper = upper + 1
  17. elif ch.isnumeric():
  18. digit = digit + 1
  19. elif ch.isspace():
  20. space = space + 1
  21. else:
  22. other = other + 1
  23. return upper, lower, digit, space, other
  24. ###################End###################
  25. if __name__ == '__main__':
  26. filename = 'mayun.txt' # 读取的文件名
  27. text = read_file(filename) # text为字符串
  28. print(*classify_char(text))

第2关 统计单词数量

  1. import string
  2. # 读文件,返回字符串
  3. def read_file(file):
  4. with open(file, 'r', encoding='utf-8') as f:
  5. return f.read()
  6. # 用空格替换所有符号,切分为列表
  7. def word_list(txt):
  8. for ch in '!"#$%&()*+,-.:;<=>?@[\\]^_’‘{|}~/':
  9. #########################Begin###############################
  10. txt = txt.replace(ch, " ") # 所有符号替换为空格
  11. return txt.split() # 切分为列表,返回列表
  12. #########################End###############################
  13. # 返回单词数量
  14. def number_of_words(ls):
  15. #########################Begin###############################
  16. return len(ls)
  17. #########################End###############################
  18. if __name__ == '__main__':
  19. filename = 'mayun.txt' # 读取的文件名
  20. text = read_file(filename) # text为字符串
  21. words_list = word_list(text) # 单词的列表
  22. words_counts = number_of_words(words_list)
  23. print(f'共有{words_counts}单词')

第3关 计算偏移量

  1. import string
  2. # 用字符串中字符ASCII值的和对26取模为偏移量
  3. def offset_cal(day):
  4. #########################Begin###############################
  5. sum_of_ch = 0
  6. for c in day:
  7. sum_of_ch = sum_of_ch + ord(c)
  8. offset = sum_of_ch % 26
  9. return offset
  10. #########################End###############################
  11. if __name__ == '__main__':
  12. secret_word = input()
  13. offset_number = offset_cal(secret_word)
  14. print(offset_number)

第4关 凯撒密码加密

  1. import string
  2. # 读文件,返回字符串
  3. def read_file(file):
  4. with open(file, 'r', encoding='utf-8') as f:
  5. return f.read()
  6. # 用字符串中字符ASCII值的和对26取模为偏移量
  7. def offset_cal(day):
  8. sum_of_ch = 0
  9. for c in day:
  10. sum_of_ch = sum_of_ch + ord(c)
  11. offset = sum_of_ch % 26
  12. return offset
  13. def kaisa(txt, number):
  14. ###########################Begin###########################
  15. lower = string.ascii_lowercase # 小写字母
  16. upper = string.ascii_uppercase # 大写字母
  17. before = string.ascii_letters
  18. after = lower[number:] + lower[:number] + upper[number:] + upper[:number]
  19. table = ''.maketrans(before, after) # 创建映射表
  20. return txt.translate(table)
  21. ############################End############################
  22. if __name__ == '__main__':
  23. filename = 'mayun.txt' # 读取的文件名
  24. text = read_file(filename) # text为字符串
  25. secret_word = input()
  26. offset_number = offset_cal(secret_word)
  27. print(kaisa(text, offset_number))

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号