一、统计⽂件数据中出现的的所有字符与该字符出现的个数(不区分⼤⼩写,标点与空格也算)

  1. ⽂件内容: hello friend, can you speak English!
  2. # 结果:
  3. {
  4. 'h': 1,
  5. 'e': 4,
  6. 'l': 3,
  7. 'o': 2,
  8. ' ': 5,
  9. ...
  10. }  

代码如下:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. #统计⽂件数据中出现的的所有字符与该字符出现的个数
  5. #字符串方式
  6. char_dict1 = {}
  7. with open('test.txt', 'r', encoding='utf-8')as f:
  8. f_str = f.read()
  9. for k1 in f_str:
  10. char_dict1[k1.lower()] = f_str.lower().count(k1.lower())
  11. print(char_dict1)
  12.  
  13. #seek方式
  14. char_dict2 = {}
  15. with open('test.txt', 'r', encoding='utf-8')as f2:
  16. for k2 in f2.read():
  17. f2.seek(0,0)
  18. char_dict2 [k2.lower()] = f2.read().lower().count(k2.lower())
  19. print(char_dict2 )
  20.  
  21. #列表方式
  22. char_dict3={}
  23. char_lsit=list()
  24. with open('test.txt', 'rt',encoding='utf-8')as f:
  25. for k5 in f.read():
  26. char_lsit.append(k5.lower())
  27. f.seek(0, 0)
  28. for k6 in f.read():
  29. if k6 in char_lsit:
  30. char_dict3[k6]=char_lsit.count(k6)
  31. print(char_dict3)  

二、 统计⽂件中⼤写字⺟、⼩写字⺟、数字及其他字符出现的次数

  1. # ⽂件内容: Abc123,-+XYZopq000.?/
  2. # 结果:
  3. {
  4. '⼤写字⺟': 4,
  5. '⼩写字⺟': 5,
  6. '数字': 6,
  7. '其他字符': 6
  8. }  

代码如下:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. #统计⽂件中⼤写字⺟、⼩写字⺟、数字及其他字符出现的次数
  5. capital_count=0
  6. lowercase_count=0
  7. number_count=0
  8. special_characters_count=0
  9. with open('test2.txt','rt',encoding='utf-8') as f:
  10. string=f.read()
  11. for i in string:
  12. if (ord(i) >= 33 and (ord(i)<= 47)) or ((ord(i) >= 58 and (ord(i)<= 64) )):
  13. special_characters_count += 1
  14. elif ord(i) >= 48 and (ord(i)<= 57):
  15. number_count += 1
  16. elif ord(i) >= 65 and (ord(i)<= 90):
  17. capital_count += 1
  18. elif ord(i) >= 97 and (ord(i)<= 122):
  19. lowercase_count += 1
  20. string_count = {'大写字母':capital_count, '小写字母':lowercase_count, '数字':number_count, '特殊字符':special_characters_count}
  21. print(string_count)

三、登录注册系统

  1. # 需求分析:
  2. 1.可以循环登录注册,输⼊1代表选择登录功能,输⼊2代表注册功能,输⼊0代表退出,其他输⼊代表
  3. 输⼊有误,重输
  4. 2.⽤户的账号密码信息存放在usr.txt⽂件中,保证⽤户注册成功后,重启系统,⽤户信息仍然保存
  5. 3.登录在账号验证通过才输⼊密码验证登录,账号验证三次失败⾃动进⼊注册功能,登录三次验证失败
  6. ⾃动退出系统
  7. 4.第⼀次注册,⽂件写⼊ 账号:密码 信息,再次注册追加写⼊ |账号:密码 信息  

代码如下:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import time
  4. white_user_set=[]
  5. black_user_set=[]
  6. user_list=[]
  7. white_userDB='userDB'
  8. black_userDB='user_blackDB'
  9.  
  10. with open(black_userDB, 'r+',encoding='utf-8') as black_f:
  11. for black_user in black_f.readlines():
  12. black_user = black_user.strip("\n")
  13. black_user_set.append(black_user)
  14.  
  15. with open(white_userDB, 'r+') as white_f:
  16. for file in white_f.readlines():
  17. file = file.strip("\n")
  18. user_field,passwd_field,remarks_field= file.split('|')
  19. name1_field, user=user_field.split(':')
  20. name2_field, passwd = passwd_field.split(':')
  21. name3_field, remarks = remarks_field.split(':')
  22. white_user_set.append({name1_field:user,name2_field:passwd,name3_field:remarks})
  23. user_list.append(user)
  24. print(white_user_set)
  25.  
  26. def mod_info(file_name,old_str,new_str):
  27. mod_date=''
  28. with open(file_name,'r+',encoding='utf-8') as f:
  29. for line in f:
  30. line = line.replace(old_str,new_str)
  31. mod_date += line
  32. with open(file_name, 'w', encoding='utf-8') as f1:
  33. f1.writelines(mod_date)
  34.  
  35. #用户注册函数
  36. def user_register():
  37. count=0
  38. while True:
  39. count+=1
  40. register_name = input('创建用户名:')
  41. register_passwd = input('创建密码:')
  42. register_passwd1 = input('创建密码:')
  43. user_remarks = input('输入您的备注信息,默认为空:')
  44. if user_remarks == '':
  45. user_remarks = 'null'
  46. if register_passwd == register_passwd1:
  47. if register_name in user_list:
  48. print('用户已存在,请重新创建')
  49. else:
  50. user_information=register_name+':'+register_passwd+':'+user_remarks
  51. print(user_information)
  52. print(type(user_information))
  53. with open(white_userDB,'a+') as f:
  54. f.write('\n')
  55. f.write(user_information)
  56. print('恭喜您,用户创建成功!!!')
  57. return 0
  58. else:
  59. if count == 3:
  60. print('失败次数超过上限,程序退出')
  61. exit(3)
  62. print('两次密码不一致,请重新创建2')

  63. #用户登录函数
  64. def user_login():
  65. Flag = True
  66. user_failures = 0
  67. all_failures = 0
  68. while Flag:
  69. login_name = input('请输入用户名:')
  70. login_passwd = input('输入密码:')
  71. print(login_name,login_passwd)
  72. if login_name in black_user_set:
  73. print('该用户已被锁定,请联系您的管理员!')
  74. exit(3)
  75. if login_name in user_list:
  76. for subscript,line in enumerate(white_user_set):
  77. if (login_name == line['name']) and (login_passwd == line['passwd']):
  78. print('登录成功')
  79. print('正在登录。请稍后')
  80. time.sleep(1)
  81. print('')
  82. print('='*30)
  83. print('欢迎来到 250 世界')
  84. print('='*30)
  85. Flag = False
  86. break
  87. for subscript,line in enumerate(white_user_set):
  88. if (login_name == line['name']) and (login_passwd != line['passwd']):
  89. user_failures += 1
  90. all_failures += 1
  91. if (user_failures == 3):
  92. print('验证失败次数过多,用户被锁定')
  93. with open(black_userDB,'a+') as f:
  94. f.write(login_name+'\n')
  95. exit(2)
  96. print('用户名或密码不正确,登录失败,请重新登录 2 ')
  97. break
  98. else:
  99. print('用户名或密码不正确,登录失败,请重新登录 3 ')
  100. all_failures += 1
  101. if all_failures == 6:
  102. print('失败次数过多,请确认后再登录 4')
  103. exit(1)
  104.  
  105. #用户信息修改函数
  106. def user_info_mod(user_name,user_passwd,remarks):
  107. user_login
  108. print('''
  109. 1.修改密码
  110. 2.修改备注信息
  111. ''')
  112. info=input('请根据提示,选择您要修改的用户信息')
  113. if info == '1':
  114. confirm_password = input('请输入您当前的密码:')
  115. new_password = input('请输入您要修改的密码:')
  116. if confirm_password == user_passwd:
  117. print('您输入的当前密码有误,请程序输入!')
  118. else:
  119. for subscript, line in enumerate(white_user_set):
  120. if (user_name == line['name']):
  121. line[passwd]=new_password
  122. mod_info(white_userDB, confirm_password, new_password )
  123. elif info == 2:
  124. new_remarks=input('请输入您要修改的备注:')
  125. for subscript, line in enumerate(white_user_set):
  126. if (user_name == line['name']):
  127. line[remarks]=new_remarks
  128. mod_info(white_userDB, line[remarks], new_remarks)
  129. else:
  130. print('无效的输入,请重新输入!')
  131.  
  132. #主函数
  133. def main():
  134. while True:
  135. count=0
  136. print('1 注册用户:')
  137. print('2 登录系统:')
  138. print('3 修改备注信息:')
  139. user_operation=input('请选择您的操作:')
  140. print(type(user_operation))
  141. if user_operation == '1' or user_operation == '3':
  142. user_register()
  143. break
  144. elif user_operation == '2':
  145. user_login()
  146. break
  147. else:
  148. count+=1
  149. if count == 3:
  150. print('失败次数过多,请确认后再登录')
  151. exit(3)
  152. print('非法的输入,请重试')
  153.  
  154. if __name__ == '__main__':
  155. main()

  

Python课程第三天作业的更多相关文章

  1. 2003031121-浦娟-python数据分析第三周作业-第一次作业

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/pexy/20sj 作业链接 https://edu.cnblogs.com/campus/pexy/20s ...

  2. python课程单元三编程题讲解(上)

    目录 1.快乐的数字 2.凯撒密码I 3.凯撒密码II 4.括号配对检测 A @     下面向大家介绍一下我在学习python课程的一些题目的解法,如果大家有什么更好的解法请私信我.这里只显示题目与 ...

  3. Python课程第五天作业

    1.利用字典推导式和列表推导式完成数据的相互转化: dic = {'name': 'Owen', 'age': 18, 'gender': '男'} ls = [('name', 'Owen'), ( ...

  4. python课程第三周重点记录

    1.关于set,set是一个无序且不重复的元素集合 s = set(["ss","dd","pp"]) #创建set s1 = set([& ...

  5. Python课程第四天作业

    1.定义一个函数,该函数可以实现控制台输入,最终返回一个int类型的正整数 def chr_to_int(): user_input = input('请输您要转换的字符串:') if user_in ...

  6. BUAA OO 2019 第三单元作业总结

    目录 总 JML规格化设计 理论基础 工具链 规格验证 验证代码 代码静态检查 自动生成测试样例 生成结果 错误分析 作业设计 第九次作业 架构 代码实现 第十次作业 架构 代码实现 第十一次作业 架 ...

  7. Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)

    Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...

  8. OO课程第三次总结QWQ

    调研,然后总结介绍规格化设计的大致发展历史和为什么得到了人们的重视 emmm为这个问题翻遍百度谷歌知乎也没有得到答案,那我就把自己认为最重要的两点简要说明一下吧,欢迎大家补充~ 1.便于完成代码的重用 ...

  9. OO第一单元三次作业总结

    写在前面 第一单元作业是针对输入的多项式进行格式合法判断,然后进行求导,结果长度优化,最后输出.三次难度递增,不断添加新的需求,总体感觉在实现方面没有多大困难(?),个人主要困扰环节是寻找自己未知bu ...

随机推荐

  1. CSS学习笔记_day7

    目录 1.径向渐变 2. 线性渐变 3. 背景图片裁剪 4. 背景图片大小 5. 边框图片 6. 边框圆角 7. 边框阴影 8.位移 9. 倾斜 10. 旋转 11. 缩放 12. 文本换行 13. ...

  2. onkeyup+onafterpaste 只能输入数字和小数点

    1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafter ...

  3. es6中的双箭头函数

    原代码: const fetchPosts = subreddit => dispatch => { dispatch(requestPosts(subreddit)); return c ...

  4. eclipse中的项目为什么无法添加到tomcat中?

    1.右键点击项目,选择properties 2.点击Project facets 3.在右侧的Runtimes中选中apache tomcat 4.勾选Dynamic Web Module 最终改为下 ...

  5. js中substr、substring、slice的区别

    substr(start, length) substring(from, to) slice(from, to) 以上函数只传一个参数时,认为是起始位置,然后按照正方向截取 substring的参数 ...

  6. P5315 头像上传

    --------------------------------------- 模拟中的模拟 --------------------------------------- FOR---MIKU -- ...

  7. kali在执行 apt-get update 命令时报错的解决方法

    报错内容: root@kali:~# apt-get updateGet:1 http://kali.mirror.garr.it/mirrors/kali kali-rolling InReleas ...

  8. scipy 的K-means

    #导入相应的包 import scipy import scipy.cluster.hierarchy as sch from scipy.cluster.vq import vq,kmeans,wh ...

  9. C++字节对齐与位域

    环境: win7_x64旗舰版.VS2015企业版 一.字节对齐: 说明:为了提高 CPU 的存储速度,编译器会对 struct 和 union的存储进行优化,即进行字节对齐. 1. 指定对齐参数值: ...

  10. day061 cookie和session

    一. cookie 1.cookie 的原理 工作原理是:浏览器访问服务端,带着一个空的cookie,然后由服务器产生内容, 浏览器收到相应后保存在本地:当浏览器再次访问时,浏览器会自动带上Cooki ...