PythonStudy——文件操作习题 Document operation exercises
# 1.统计文件数据中字母e出现的次数(不区分大小写)
# 文件内容:hello friend, can you speak English!
# 结果:4
# 分析:将文件内容读出,然后统计读出的字符串中字符e的个数(字符串count功能)
with open('01.txt', 'r') as f:
str_1 = f.read()
count_1 = str_1.lower().count('e')
print(count_1)
# 2.统计文件数据中出现的所有字符与该字符出现的个数(不区分大小写,标点与空格也算)
# 文件内容:hello friend, can you speak English!
# 结果:
# {
# 'h': 1,
# 'e': 4,
# 'l': 3,
# 'o': 2,
# ' ': 5,
# ...
# }
# 分析:将文件内容读出,然后统计读出的字符串中每个字符的个数,形成字段(for遍历读取的字符串)
dict_2 = {}
list_2 = []
with open('01.txt', 'r') as f:
str_2 = f.read()
for item in str_2:
list_2.append(item)
for item in list_2:
k = item
v = list_2.count(item)
dict_2[k] = v
print(dict_2)
# 3.读取文件内容,分析出所有的账号及对应的密码
# 文件内容:owen:123456|egon:123qwe|liuxx:000000
# 结果:
# {
# 'owen': '123456',
# 'egon': '123qwe',
# 'liuxx': '000000'
# }
# 分析:将文件内容读出,然后按|拆分出 账号:密码 格式的子字符串,再按:拆分成 账号及密码,存放到字典中
list_3 = []
dict_3 = {}
with open('03.txt', 'r') as f:
str_3 = f.read()
list_3 = str_3.split('|')
for item in list_3:
k, v = item.split(':')
dict_3[k] = v
print(dict_3)
# 4.在题3的基础上,账号密码已经被存储在文件中,完成用户登录成功或失败(只做一次性判断)
# 文件内容:owen:123456|egon:123qwe|liuxx:000000
# 需求:输入账号、密码,然后进行登录判断,账号密码均正确打印登录成功,否则打印登录失败
# 分析:先完成题3,分析出账号密码字典,然后拿输入的账号密码与字典中数据进行校验
list_3 = []
dict_3 = {}
with open('03.txt', 'r') as f:
str_3 = f.read()
list_3 = str_3.split('|')
for item in list_3:
k, v = item.split(':')
dict_3[k] = v
while True:
name = input("请输入账户名: ")
if name not in dict_3:
print("用户名输入错误,请重新输入!!!")
continue
else:
print("用户名正确,请继续输入密码!!!") psw = input("请输入密码: ")
if dict_3[name] == psw:
print("用户名及密码均正确,登陆成功!!!")
break
else:
print("密码错误,登陆失败,请重新输入!!!")
# 5.在题3的基础上,完成用户注册的功能(只做一次性判断)
# 文件内容:owen:123456|egon:123qwe|liuxx:000000
# 需求:输入注册的账号、密码,账号已存在的打印账号已存在,注册失败,相反打印注册成功,并将新账号密码录入文件
# 结果:如果输入mac、123123 => owen:123456|egon:123qwe|liuxx:000000|mac:123123
# 分析:先完成题3,分析出账号密码字典,然后拿输入的注册账号与字典中数据进行校验,如果校验没有新账号
# -- 1.采用 w 模式写文件,可以在读取文件的内容后拼接 |mac:123123 字符串,将拼接后的总字符串一次性写入
# -- 2.采用 a 模式写文件,可以直接追加写入 |mac:123123 字符串
list_3 = []
dict_3 = {}
with open('03.txt', 'r') as f:
str_3 = f.read()
list_3 = str_3.split('|')
for item in list_3:
k, v = item.split(':')
dict_3[k] = v
while True:
name = input("请输入账户名: ")
if name in dict_3:
print("用户名已存在,注册失败!!!")
break
else:
print("新用户名添加成功!!!")
psw = input("请输入密码: ")
print("密码录入成功,结束注册!!!")
break
with open('03_2.txt', 'a', encoding='utf-8') as f:
f.write('|' + name + ':' + psw)
# -------------------------------------------
# 拓展1.统计文件中大写字母、小写字母、数字及其他字符出现的次数
# 文件内容:Abc123,-+XYZopq000.?/
# 结果:
# {
# '大写字母': 4,
# '小写字母': 5,
# '数字': 6,
# '其他字符': 6
# }
# 分析:利用ASCII表,for循环遍历每一个字符value,eg:'a' <= value <= 'z'就代表是小写字母
with open('5-1.txt', 'r', encoding='utf-8') as f:
str_5 = f.read()
list_5 = [0, 0, 0, 0, '大写字母', '小写字母', '数字', '其他字符']
dict_5 = {}
for item in str_5:
if 'A' <= item <= 'Z':
list_5[0] = list_5[0] + 1
elif 'a' <= item <= 'z':
list_5[1] = list_5[1] + 1
elif '' <= item <= '':
list_5[2] = list_5[2] + 1
else:
list_5[3] = list_5[3] + 1
for k in list_5[4:8]:
dict_5.setdefault(k)
dict_5[k] = list_5[list_5.index(k) - 4]
print(dict_5)
# 拓展2.完成登录注册系统(从空文件开始做)
# 需求分析:
# '''
# 1.可以循环登录注册,输入1代表选择登录功能,输入2代表注册功能,输入0代表退出,其他输入代表输入有误,重输
# 2.用户的账号密码信息存放在usr.txt文件中,保证用户注册成功后,重启系统,用户信息仍然保存
# 3.登录在账号验证通过才输入密码验证登录,账号验证三次失败自动进入注册功能,登录三次验证失败自动退出系统
# 4.第一次注册,文件写入 账号:密码 信息,再次注册追加写入 |账号:密码 信息
#
# 分析过程:略
while True:
num = input("输入1代表选择登录功能,输入2代表注册功能,输入0代表退出>>>")
if num == '':
print("退出!!")
break
elif num == '':
list_3 = []
dict_3 = {}
with open('usr.txt', 'r', encoding='utf-8') as f:
str_3 = f.read()
print(str_3)
list_3 = str_3.split('|')
print(list_3)
for item in list_3:
k, v = item.split(':')
dict_3[k] = v
while True:
name = input("注册请输入账户名: ")
if name in dict_3:
print("用户名已存在,注册失败!!!")
break
else:
print("新用户名添加成功!!!")
psw = input("请输入密码: ")
print("密码录入成功,结束注册!!!")
break
with open('usr.txt', 'a+t', encoding='utf-8') as f:
f.write('|' + name + ':' + psw)
elif num == '':
list_3 = []
dict_3 = {}
with open('03.txt', 'r') as f:
str_3 = f.read()
list_3 = str_3.split('|')
for item in list_3:
k, v = item.split(':')
dict_3[k] = v
while True:
name = input("请登录输入账户名: ")
if name not in dict_3:
print("用户名输入错误,请重新输入!!!")
continue
else:
print("用户名正确,请继续输入密码!!!") psw = input("请输入密码: ")
if dict_3[name] == psw:
print("用户名及密码均正确,登陆成功!!!")
break
else:
print("密码错误,登陆失败,请重新输入!!!")
else:
print("输入有误,请重新输入!!!")
continue
PythonStudy——文件操作习题 Document operation exercises的更多相关文章
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- PythonStudy——文件操作 File operation
# 文件:就是硬盘的一块存储空间 # 1.使用文件的三步骤: # 打开文件- 得到文件对象:找到数据存放在硬盘的位置,让操作系统持有该空间,具有操作权# 硬盘空间 被 操作系统持有# 文件对象f 被 ...
- ios 简单的plist文件读写操作(Document和NSUserDefaults)
最近遇到ios上文件读写操作的有关知识,记录下来,以便以后查阅,同时分享与大家. 一,简单介绍一下常用的plist文件. 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对 ...
- C# 文件操作类大全
C# 文件操作类大全 时间:2015-01-31 16:04:20 阅读:1724 评论:0 收藏:0 [点我收藏+] 标签: 1.创建文件夹 //usin ...
- HTML5 本地文件操作之FileSystemAPI实例(一)
文件操作实例整理一 1.请求系统配额类型 console.info(window.TEMPORARY); //0 临时 console.info(window.PERSISTENT); //1 持久 ...
- 前端学PHP之文件操作
× 目录 [1]文件类型 [2]文件属性 [3]目录路径[4]目录遍历[5]目录统计[6]目录增删[7]目录复制[8]文件操作[9]文件内容 前面的话 在程序运行时,程序本身和数据一般都存在内存中,当 ...
- Android开发7:简单的数据存储(使用SharedPreferences)和文件操作
前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...
- 廖雪峰js教程笔记14 file文件操作
在HTML表单中,可以上传文件的唯一控件就是<input type="file">. 注意:当一个表单包含<input type="file" ...
- HTML5学习之文件操作(九)
之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很进行跨平台的处理,另外就是让我们的web应用依赖了第三方的插件,而不是很独立 ...
随机推荐
- 使用mpvue开发小程序
前言: 最近接到小程序的开发需求,由于之前也没开发过小程序,心情还是有点激动.先花15分钟看一遍小程序官方文档,再花10分钟看一遍mpvue官方文档,然后拿着原型图和UI图就开干.踩了不少坑,写篇博客 ...
- Codeforces Round #349 (Div. 1)E. Forensic Examination
题意:给一个初始串s,和m个模式串,q次查询每次问你第l到第r个模式串中包含\(s_l-s_r\)子串的最大数量是多少 题解:把初始串和模式串用分隔符间隔然后建sam,我们需要找到在sam中表示\(s ...
- ThinkPHP5.0源码学习之注册错误和异常处理机制
在base.php文件中,用一句代码\think\Error::register();实现错误和异常处理机制的注册. // 注册错误和异常处理机制 \think\Error::register(); ...
- AIX中PV,VG,LV及FS常用相关命令
1.PV常用相关命令 1)lsdev:列出ODM(Object Data Manager)中的设备. 2)chdev:修改一个AIX设备的属性. 3)mkdev:创建一个AIX设备. 4)chpv:修 ...
- python -- while循环,格式化输出,运算符,初识编码
一.while循环 1.语法 while 条件: 循环体(结果) 如果条件为真,则直接执行结果),然后再次判断条件,知道条件为假,停止循环. while True: print('你是谁呢') 退 ...
- 并发,同步锁,Runnable,Callable,Future
1.并发: 在我们的操作系统中,同一个时间点,有N个线程都想访问同一个程序!但是cpu只能运行一个! 这种情况就是! 多个线程在 同一个时间点 访问同一个资源,会引发线程不安全的问题! 怎么解决这种不 ...
- vuex-Mutation(同步)
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation.Vuex 中的 mutation 非常类似于事件: 每个 mutation 都有一个字符串的 事件类型 (type) 和 一 ...
- intelij idea设置和使用git
一.通过git从远程拉取代码到idea本地 1.git配置 2.通过git拉取远程仓库代码 图一: 图二: 3.下一步下一步即可 二.share本地仓库代码到git上 注意: 通过share会变成一个 ...
- java中一些对象(po,vo,dao,pojo)等的解释
一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对 ...
- freckles
题目描述: In an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad's back ...