登录注册(三次机会)

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学习日记(文件操作练习题)的更多相关文章

  1. python学习日记(文件操作)

    文件操作概述 计算机系统分为:操作系统,计算机硬件,应用程序. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序 ...

  2. python学习笔记:文件操作和集合(转)

    转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...

  3. python学习总结---文件操作

    # 文件操作 ### 目录管理(os) - 示例 ```python # 执行系统命令 # 清屏 # os.system('cls') # 调出计算器 # os.system('calc') # 查看 ...

  4. 03 python学习笔记-文件操作(三)

    本文内容主要包括以下方面: 1. 文件操作基本认识2. 只读(r, rb)3. 只写(w, wb)4. 追加(a, ab)5. r+读写6. w+写读7. a+写读(追加写读)8. 文件的修改 一.文 ...

  5. python学习day8 文件操作(深度学习)

    文件操作 (day7内容扩展) 1 文件基本操作 obj = open('路径',mode='模式',encoding='编码')obj.write()obj.read()obj.close() 2 ...

  6. python 学习分享-文件操作篇

    文件操作 f_open=open('*.txt','r')#以只读的方式(r)打开*.txt文件(需要与py文件在同一目录下,如果不同目录,需写全路径) f_open.close()#关闭文件 打开文 ...

  7. Python学习笔记——文件操作

    python中,一切皆对象.   一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建 ...

  8. Python学习之==>文件操作

    1.打开文件的模式 r,只读模式(默认)[不可写:文件不存在,会报错] w,只写模式[不可读:不存在则创建:存在则删除内容] a,追加模式[不可读:不存在则创建:存在则追加内容] r+,读写模式[可读 ...

  9. Python学习之文件操作

    Python 文件打开方式 文件打开方法:open(name[,mode[buf]]) name:文件路径mode:打开方式buf:缓冲buffering大小 f = open('test.txt', ...

  10. Python学习 :文件操作

    文件基本操作流程: 一. 创建文件对象 二. 调用文件方法进行操作 三. 关闭文件(注意:只有在关闭文件后,才会写入数据) fh = open('李白诗句','w',encoding='utf-8') ...

随机推荐

  1. php微信公众号开发入门小教程

    1.配置相关服务器 (1) 如下,把自己的服务器ip白名单配置上: (2) 开始配置令牌,配置令牌时先需要把现成的代码放到自己的服务器上面,代码里面包含自己的设置的令牌号码,这样才可以配置成功. 注意 ...

  2. fileInput插件上传文件

    一.ftl <form action="" method="post" name="form" id="form" ...

  3. 学习yii2.0——行为

    学习yii框架的行为之前,需要先了解yii的事件,可以参考这篇博客: 怎么理解行为 yii框架的行为有点类似于trait,可以有个大体的概念: 1.有一个类A,包含一些属性和方法,很普通的一个类A. ...

  4. 【学习总结】GirlsInAI ML-diary day-6-String字符串

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day6 认识字符串 字符串的性质 字符串的玩法 1-字符串就是字符的序列 序列,代表字符串是有顺序的!这里很重要. 比如我 ...

  5. php常用方法

    在日常开发中,经常我们使用系统方法或者是自己封装的方法进行项目的开发.再此总结一下!!! 一.对于字符串截取 1.使用mbstring扩展  (注意编码的设置) mb_substr($str,2,5, ...

  6. 【Python3练习题 016】 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

    这题得倒着推.第10天还没吃,就剩1个,说明第9天吃完一半再吃1个还剩1个,假设第9天还没吃之前有桃子p个,可得:p * 1/2 - 1 = 1,可得 p = 4.以此类推,即可手算出. 代码思路为: ...

  7. java设计模式:面向对象设计的7个原则

    在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据7条原则来开发程序,从而提高软件开发效率,节约软件开发成本和维护成本. 这7条原则分别是:开闭原则.里氏 ...

  8. composer 自动加载 通过classmap自动架子啊

    https://github.com/brady-wang/composer github地址 composer加载自己写的类 放入一个目录下 更改composer.json "autolo ...

  9. [2018.05].NET Core 3 and Support for Windows Desktop Applications

    .NET Core 3 and Support for Windows Desktop Applications Richard 微软官网的内容...net 3.0 升级任务 任重道远 https:/ ...

  10. day 7-20 视图,触发器,事务

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...