python学习日记(文件操作练习题)
登录注册(三次机会)
- name = input('请注册姓名:')
- password = input('请注册密码:')
- with open('log',mode='w',encoding='utf-8') as f:
- f.write('{}\n{}'.format(name,password))#格式化输出,两个参数写进一行,write不允许两个变量
- print('注册成功')
- lis = []
- count = 3
- while count > 0:
- count -= 1
- with open('log', mode='r+', encoding='utf-8') as f1:
- for i in f1:
- lis.append(i)#读取内容写入到列表中
- name1 = input('请输入登录用户名:')
- if name1 == lis[0].strip():#strip()可以去除\n,\t
- password1 = input('请输入登录密码:')
- if password1 == lis[1]:
- print('\n登录成功!')
- break
- else:
- print('密码错误')
- print('您还有%d次机会'%(count))
- if count == 0:
- chance = input('机会已用完,是否还想继续?Y(case-sensitive)')
- if chance.upper() == 'Y':
- count = 3
- continue
- else:
- print('用户名错误,请重新输入')
- print('您还有%d次机会'%(count))
- if count == 0:
- chance = input('机会已用完,是否还想继续?Y(case-sensitive)')
- if chance.upper() == 'Y':
- count = 3
- continue
- else:
- print('\n明天再来吧')
改变文件数据类型
- # 1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数。
- # apple 10 3
- # tesla 100000 1
- # mac 3000 2
- # lenovo 30000 3
- # chicken 10 3
- # 通过代码,将其构建成这种数据类型:[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 并计算出总价钱。
题目
一、(问题少年)
- with open('a.txt','r+',encoding='utf-8') as f:
- li = []
- li1 = []
- for line in f:
- li.append(line.split())
- print(li)
- # dic = {}#问题在这里,dic只有一个地址(自己遇到的问题 1),最后字典里只有一组值,列表里添加的全都是这一组,内存指向问题
- j = 0
- sum = 0
- while j < len(li):
- dic = {}#解决问题:每次循环都重新建一个新的dic
- dic['name'] = li[j][0]
- dic['price'] = li[j][1]
- dic['amount'] = li[j][2]
- print(dic)
- li1.append(dic)#直接添加字典,必须每次循环都要重新定义字典,另开内存地址,不然一直指向同一个地址,列表添加多少次值都是字典最后更新的数据
- # li1.append({'name':li[j][0],'price':li[j][1],'amount':li[j][2]})
- cost = int(li[j][1]) * int(li[j][2])#不转成int 不能进行运算str
- # cost = int(dic['price']) * int(dic['amount'])#不转成int 不能进行运算str(自己遇到的问题2)
- print(cost)
- sum += cost
- j = j+1
- print(li1)
- print('总的价格为:',sum)#+加号拼接提示int 和 str不能拼接,所以用逗号。(自己遇到的问题3)
二、(新的角度)
- with open('a.txt','r+',encoding='utf-8') as f:
- li = []
- li1 = []
- for line in f:
- li.append(line.split())
- print(li)
- # dic = {}
- j = 0
- sum = 0
- while j < len(li):
- dic = {}#看到没?放这里啦,关注点一
- dic['name'] = li[j][0]
- dic['price'] = li[j][1]
- dic['amount'] = li[j][2]
- print(dic)
- # li1.append(dic)
- li1.append({'name':li[j][0],'price':li[j][1],'amount':li[j][2]})#从列表添加value,关注点二
- # cost = int(li[j][1]) * int(li[j][2])#不转成int 不能进行运算str
- cost = int(dic['price']) * int(dic['amount'])#不转成int 不能进行运算str
- print(cost)
- sum += cost
- j = j+1
- print(li1)
- print('总的价格为:',sum)#+加号拼接提示int 和 str不能拼接,所以用逗号。
修改文件内容
有如下文件:
-------
This is a message
tony是一个名副其实的iron-man。
tony其实是个男人。
谁说tony是坏人?
你们真逗,tony再厉害,也掩饰不住资深富人的气质。
----------
将文件中所有的tony都替换成大写的IM。
- with open('file','r+',encoding='utf-8') as f1,\
- open('file.bak','a',encoding='utf-8') as f2:
- for line in f1:
- if 'tony' in line:
- line = line.replace('tony','IM')
- f2.write(line)
- import os
- os.remove('file')
- os.rename('file.bak','file')
pass
python学习日记(文件操作练习题)的更多相关文章
- python学习日记(文件操作)
文件操作概述 计算机系统分为:操作系统,计算机硬件,应用程序. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序 ...
- python学习笔记:文件操作和集合(转)
转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...
- python学习总结---文件操作
# 文件操作 ### 目录管理(os) - 示例 ```python # 执行系统命令 # 清屏 # os.system('cls') # 调出计算器 # os.system('calc') # 查看 ...
- 03 python学习笔记-文件操作(三)
本文内容主要包括以下方面: 1. 文件操作基本认识2. 只读(r, rb)3. 只写(w, wb)4. 追加(a, ab)5. r+读写6. w+写读7. a+写读(追加写读)8. 文件的修改 一.文 ...
- python学习day8 文件操作(深度学习)
文件操作 (day7内容扩展) 1 文件基本操作 obj = open('路径',mode='模式',encoding='编码')obj.write()obj.read()obj.close() 2 ...
- python 学习分享-文件操作篇
文件操作 f_open=open('*.txt','r')#以只读的方式(r)打开*.txt文件(需要与py文件在同一目录下,如果不同目录,需写全路径) f_open.close()#关闭文件 打开文 ...
- Python学习笔记——文件操作
python中,一切皆对象. 一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建 ...
- Python学习之==>文件操作
1.打开文件的模式 r,只读模式(默认)[不可写:文件不存在,会报错] w,只写模式[不可读:不存在则创建:存在则删除内容] a,追加模式[不可读:不存在则创建:存在则追加内容] r+,读写模式[可读 ...
- Python学习之文件操作
Python 文件打开方式 文件打开方法:open(name[,mode[buf]]) name:文件路径mode:打开方式buf:缓冲buffering大小 f = open('test.txt', ...
- Python学习 :文件操作
文件基本操作流程: 一. 创建文件对象 二. 调用文件方法进行操作 三. 关闭文件(注意:只有在关闭文件后,才会写入数据) fh = open('李白诗句','w',encoding='utf-8') ...
随机推荐
- debian下 Hadoop 1.0.4 集群配置及运行WordCount
说明:我用的是压缩包安装,不是安装包 官网安装说明:http://hadoop.apache.org/docs/r1.1.2/cluster_setup.html,繁冗,看的眼花...大部分人应该都不 ...
- Java对象的创建、内存布局和访问定位
在Java运行时数据区中,我们知道了虚拟机内存的概况,本文介绍虚拟机内存中的数据的其它细节,如对象如何创建.如何布局以及如何访问. 基于实用的原则,这里以HotSpot虚拟机和常用的内存区域Java堆 ...
- beego 各种形式的路由实例
基本路由 基本路由就是和http.Handle和http.HandleFunc一样都是绑定固定的路径,比如绑定了4个路由映射: 定义的4个控制器中,匹配哪一个路由,就输出对应的控制名. beego.R ...
- 如何在 Linux 中查找最大的 10 个文件
https://linux.cn/article-9495-1.html
- Windows 10正式版历代记:Version 和 Build 对应关系
2017年10月中下旬,微软面向正式版用户推送了Windows 10创意者更新秋季版.这是自发布以来,Windows 10的第五个大版本. 在这篇文章中,我们来回顾一下Windows 10正式版的历史 ...
- 上古神器之Vim编辑器
在Linux操作环境下进行文本的编辑少不了编辑器vi ,vim,nona... 一. 修改颜色方案 有时候,使用vim打开一个文件,竟然是蓝色的,辨识度相当的差,这个时候,我们可以调整 一下颜色的搭配 ...
- jQuery EasyUI 折叠面板accordion的使用实例
1.对折叠面板区域 div 设置 class=”easyui-accordion” 2.在区域添加多个 div, 每个 div 就是一个面板 (每个面板一定要设置 title 属性). 3.设置面板属 ...
- 关于 ajax
1.type 提交类型 get /post 2.async 默认true 异步 3.cache 默认 true 读取缓存 false不读取缓存 会在请求后面 添加一个时间戳 https://www. ...
- java中解决小数精度问题
public class TestDouble { public static void main(String[] args) { Double d1 = 0.1; Double d2 = 0.2; ...
- Netty ByteBuf和Nio ByteBuffer
参考https://blog.csdn.net/jeffleo/article/details/69230112 一.简介 Netty中引入了ByteBuf,它相对于ByteBuffer来说,带来了很 ...