Python课程第三天作业
一、统计⽂件数据中出现的的所有字符与该字符出现的个数(不区分⼤⼩写,标点与空格也算)
⽂件内容: hello friend, can you speak English!
# 结果:
{
'h': 1,
'e': 4,
'l': 3,
'o': 2,
' ': 5,
...
}
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*- #统计⽂件数据中出现的的所有字符与该字符出现的个数
#字符串方式
char_dict1 = {}
with open('test.txt', 'r', encoding='utf-8')as f:
f_str = f.read()
for k1 in f_str:
char_dict1[k1.lower()] = f_str.lower().count(k1.lower())
print(char_dict1) #seek方式
char_dict2 = {}
with open('test.txt', 'r', encoding='utf-8')as f2:
for k2 in f2.read():
f2.seek(0,0)
char_dict2 [k2.lower()] = f2.read().lower().count(k2.lower())
print(char_dict2 ) #列表方式
char_dict3={}
char_lsit=list()
with open('test.txt', 'rt',encoding='utf-8')as f:
for k5 in f.read():
char_lsit.append(k5.lower())
f.seek(0, 0)
for k6 in f.read():
if k6 in char_lsit:
char_dict3[k6]=char_lsit.count(k6)
print(char_dict3)
二、 统计⽂件中⼤写字⺟、⼩写字⺟、数字及其他字符出现的次数
# ⽂件内容: Abc123,-+XYZopq000.?/
# 结果:
{
'⼤写字⺟': 4,
'⼩写字⺟': 5,
'数字': 6,
'其他字符': 6
}
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*- #统计⽂件中⼤写字⺟、⼩写字⺟、数字及其他字符出现的次数
capital_count=0
lowercase_count=0
number_count=0
special_characters_count=0
with open('test2.txt','rt',encoding='utf-8') as f:
string=f.read()
for i in string:
if (ord(i) >= 33 and (ord(i)<= 47)) or ((ord(i) >= 58 and (ord(i)<= 64) )):
special_characters_count += 1
elif ord(i) >= 48 and (ord(i)<= 57):
number_count += 1
elif ord(i) >= 65 and (ord(i)<= 90):
capital_count += 1
elif ord(i) >= 97 and (ord(i)<= 122):
lowercase_count += 1
string_count = {'大写字母':capital_count, '小写字母':lowercase_count, '数字':number_count, '特殊字符':special_characters_count}
print(string_count)
三、登录注册系统
# 需求分析:
1.可以循环登录注册,输⼊1代表选择登录功能,输⼊2代表注册功能,输⼊0代表退出,其他输⼊代表
输⼊有误,重输
2.⽤户的账号密码信息存放在usr.txt⽂件中,保证⽤户注册成功后,重启系统,⽤户信息仍然保存
3.登录在账号验证通过才输⼊密码验证登录,账号验证三次失败⾃动进⼊注册功能,登录三次验证失败
⾃动退出系统
4.第⼀次注册,⽂件写⼊ 账号:密码 信息,再次注册追加写⼊ |账号:密码 信息
代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
white_user_set=[]
black_user_set=[]
user_list=[]
white_userDB='userDB'
black_userDB='user_blackDB' with open(black_userDB, 'r+',encoding='utf-8') as black_f:
for black_user in black_f.readlines():
black_user = black_user.strip("\n")
black_user_set.append(black_user) with open(white_userDB, 'r+') as white_f:
for file in white_f.readlines():
file = file.strip("\n")
user_field,passwd_field,remarks_field= file.split('|')
name1_field, user=user_field.split(':')
name2_field, passwd = passwd_field.split(':')
name3_field, remarks = remarks_field.split(':')
white_user_set.append({name1_field:user,name2_field:passwd,name3_field:remarks})
user_list.append(user)
print(white_user_set) def mod_info(file_name,old_str,new_str):
mod_date=''
with open(file_name,'r+',encoding='utf-8') as f:
for line in f:
line = line.replace(old_str,new_str)
mod_date += line
with open(file_name, 'w', encoding='utf-8') as f1:
f1.writelines(mod_date) #用户注册函数
def user_register():
count=0
while True:
count+=1
register_name = input('创建用户名:')
register_passwd = input('创建密码:')
register_passwd1 = input('创建密码:')
user_remarks = input('输入您的备注信息,默认为空:')
if user_remarks == '':
user_remarks = 'null'
if register_passwd == register_passwd1:
if register_name in user_list:
print('用户已存在,请重新创建')
else:
user_information=register_name+':'+register_passwd+':'+user_remarks
print(user_information)
print(type(user_information))
with open(white_userDB,'a+') as f:
f.write('\n')
f.write(user_information)
print('恭喜您,用户创建成功!!!')
return 0
else:
if count == 3:
print('失败次数超过上限,程序退出')
exit(3)
print('两次密码不一致,请重新创建2')
#用户登录函数
def user_login():
Flag = True
user_failures = 0
all_failures = 0
while Flag:
login_name = input('请输入用户名:')
login_passwd = input('输入密码:')
print(login_name,login_passwd)
if login_name in black_user_set:
print('该用户已被锁定,请联系您的管理员!')
exit(3)
if login_name in user_list:
for subscript,line in enumerate(white_user_set):
if (login_name == line['name']) and (login_passwd == line['passwd']):
print('登录成功')
print('正在登录。请稍后')
time.sleep(1)
print('')
print('='*30)
print('欢迎来到 250 世界')
print('='*30)
Flag = False
break
for subscript,line in enumerate(white_user_set):
if (login_name == line['name']) and (login_passwd != line['passwd']):
user_failures += 1
all_failures += 1
if (user_failures == 3):
print('验证失败次数过多,用户被锁定')
with open(black_userDB,'a+') as f:
f.write(login_name+'\n')
exit(2)
print('用户名或密码不正确,登录失败,请重新登录 2 ')
break
else:
print('用户名或密码不正确,登录失败,请重新登录 3 ')
all_failures += 1
if all_failures == 6:
print('失败次数过多,请确认后再登录 4')
exit(1) #用户信息修改函数
def user_info_mod(user_name,user_passwd,remarks):
user_login
print('''
1.修改密码
2.修改备注信息
''')
info=input('请根据提示,选择您要修改的用户信息')
if info == '1':
confirm_password = input('请输入您当前的密码:')
new_password = input('请输入您要修改的密码:')
if confirm_password == user_passwd:
print('您输入的当前密码有误,请程序输入!')
else:
for subscript, line in enumerate(white_user_set):
if (user_name == line['name']):
line[passwd]=new_password
mod_info(white_userDB, confirm_password, new_password )
elif info == 2:
new_remarks=input('请输入您要修改的备注:')
for subscript, line in enumerate(white_user_set):
if (user_name == line['name']):
line[remarks]=new_remarks
mod_info(white_userDB, line[remarks], new_remarks)
else:
print('无效的输入,请重新输入!') #主函数
def main():
while True:
count=0
print('1 注册用户:')
print('2 登录系统:')
print('3 修改备注信息:')
user_operation=input('请选择您的操作:')
print(type(user_operation))
if user_operation == '1' or user_operation == '3':
user_register()
break
elif user_operation == '2':
user_login()
break
else:
count+=1
if count == 3:
print('失败次数过多,请确认后再登录')
exit(3)
print('非法的输入,请重试') if __name__ == '__main__':
main()
Python课程第三天作业的更多相关文章
- 2003031121-浦娟-python数据分析第三周作业-第一次作业
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/pexy/20sj 作业链接 https://edu.cnblogs.com/campus/pexy/20s ...
- python课程单元三编程题讲解(上)
目录 1.快乐的数字 2.凯撒密码I 3.凯撒密码II 4.括号配对检测 A @ 下面向大家介绍一下我在学习python课程的一些题目的解法,如果大家有什么更好的解法请私信我.这里只显示题目与 ...
- Python课程第五天作业
1.利用字典推导式和列表推导式完成数据的相互转化: dic = {'name': 'Owen', 'age': 18, 'gender': '男'} ls = [('name', 'Owen'), ( ...
- python课程第三周重点记录
1.关于set,set是一个无序且不重复的元素集合 s = set(["ss","dd","pp"]) #创建set s1 = set([& ...
- Python课程第四天作业
1.定义一个函数,该函数可以实现控制台输入,最终返回一个int类型的正整数 def chr_to_int(): user_input = input('请输您要转换的字符串:') if user_in ...
- BUAA OO 2019 第三单元作业总结
目录 总 JML规格化设计 理论基础 工具链 规格验证 验证代码 代码静态检查 自动生成测试样例 生成结果 错误分析 作业设计 第九次作业 架构 代码实现 第十次作业 架构 代码实现 第十一次作业 架 ...
- Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)
Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...
- OO课程第三次总结QWQ
调研,然后总结介绍规格化设计的大致发展历史和为什么得到了人们的重视 emmm为这个问题翻遍百度谷歌知乎也没有得到答案,那我就把自己认为最重要的两点简要说明一下吧,欢迎大家补充~ 1.便于完成代码的重用 ...
- OO第一单元三次作业总结
写在前面 第一单元作业是针对输入的多项式进行格式合法判断,然后进行求导,结果长度优化,最后输出.三次难度递增,不断添加新的需求,总体感觉在实现方面没有多大困难(?),个人主要困扰环节是寻找自己未知bu ...
随机推荐
- Maven配置pom.xml,正在下载时网络不佳下载失败的解决方案
环境:jdk1.7.0_17,Myeclipse 10,apache-maven-3.2.5 配置项目中pom.xml的dependencies时 ,如果本地仓库没有的话,就会自动下载.找不到仓库位置 ...
- JSP+javaBean:简易投票网页练习
一.项目目标 session作用域中如果不及时清理一些对象,在一定久的时间或相当数量的请求后,造成session中大量对象堆积,这将严重影响服务器的性能. 在本实例中,通过写一个jsp与javaBea ...
- head first c初探网络编程上
server连接网络四部曲. 为了与外界沟通,c程序用数据流读写字节,比較经常使用的数据流有标准输入.标准输出.文件等. 假设想写一个与网络通信的程序.就须要一种新的数据流----------套接字. ...
- mysql的事务和数据库锁的关系
数据库加事务并不是数据就安全来了,事务和锁要分析清楚和配合使用 问题背景处于对高并发的秒杀环节的理解整理如下: 秒杀的时候高并发主要注意1.在秒杀的情况下,肯定不能如此高频率的去读写数据库,会严重造成 ...
- Java高级特性 第10节 IDEA和Eclipse整合JUnit测试框架
一.IDEA整合Junit测试框架 1.安装插件 打开File菜单的下拉菜单settings[设置] : 点击左侧Plugins[插件]菜单 在输入框中输入JUnitGenerator 2.0,点击I ...
- cellmap 基站查询 for android
cellmap for android 3.6.8.8.1.8 更新日期:2019年4月28日 特别声明:本软件不能进行手机定位,不能对手机号码定位,谨防被骗. 安装说明:请卸载旧版本后,重新下载安装 ...
- Hbase数据库
1.简介 HBase从诞生至今将近10年,在apache基金会的孵化下,已经变成一个非常成熟的项目,也有许多不同的公司支持着许多不同的分支版本,如cloudra等等. HBase不同于一般的关 ...
- Spring Boot - AOP(面向切面)-切入点表达式
切入点指示符用来指示切入点表达式目的,在 Spring AOP 中目前只有执行方法这一个连接点,Spring AOP 支持的 AspectJ 切入点指示符,切入点表达式可以使用 &&. ...
- Unity 3D入门简介
最近在刚开始学习Unity 3D,在这里记录一下学习心得和学习笔记,边学边写,可能会比较零散.好了,废话不多说,今天从Unity 3D入门写起,主要简要介绍一下Unity 3D的和一些学习资料.以下如 ...
- ES - Dynamic templates 动态模板
1.ES Mapping 在lucene中,索引中每个字段都需要指定很多属性,例如:是否分词.采用哪个分词器.是否存储等. 在ES中,其实索引中每个字段也需要指定这些属性,我们有时候并没有对这些属性进 ...