day13 笔记
文件修改方式:
方式一:读全部,写全部 占内存 省硬盘
方式二:一行行读入,做完更改之后用心的文件来覆盖旧的文件 删除 重命名 省内存 废硬盘
os os.remove() os.rename()
什么是函数?相当于一种具备某种功能的工具,先定义后调用
为什么要用? 1.代码冗余,组织结构不清晰,可读性差
2.可维护性,可扩展性
如何用 先定义:
def 函数名(参数):
'''描述'''
函数体
return 1
三种形式 1.无参数的
2.有参数的
3.空函数
def add(x):
pass
def login(x):
pass
后调用:函数名类比变量名:内存地址
1.根据函数名来寻找函数的内存地址
2.根据括号内参数来执行程序内容
函数调用可以当做参数:res(fun())
函数返回值:return 是函数用来结束的标志,一旦函数运行到return位置是就会立即终止,并且返回值,默认返回值是None
1.返回none的情况 1.没有return 2.return后面没有加任何值
2.返回一个值 res=fun()#1
3.返回多个值 会用,隔开并且以元组的形式返回这些值
简易atm
import os
def login():
'''登录模块,用户名密码存在aaa.txt中,形式为name:password'''
tag = True
while tag:
username = input('请输入账号: ').strip()
with open('aa.txt', 'r', encoding='utf-8') as f:
for user_pwd in f:
user, pwd = user_pwd.strip().split(':')
if username == user:
while True:
password = input('请输入密码: ').strip()
if password == pwd:
print('登录成功!')
tag = False
break
else:
print('登录失败!')
return 1,username
def method_txt(username,new):
'''文件更改模块,用来修改金额,文件是db.txt,格式为name:余额'''
with open("db.txt",mode="r",encoding="utf-8")as f1,\
open("bb.txt",mode="w",encoding="utf-8")as f2:
for i in f1:
userdata =i.strip().split(":")
if username == userdata[0]:
f2.write('%s:%s\n' % (username, new))
else:
f2.write(i)
os.remove("db.txt")
os.rename("bb.txt","db.txt")
def add(username):
'''存款模块,可以吧打开文件搜索相应账户的过程单独拿出来在写一个函数,但是交作业来不及了'''
add_M = input("请输入你要存入的金额")
with open("db.txt",mode="rt",encoding="utf-8")as f:
for i in f:
user_data = i.strip().split(":")
if username == user_data[0]:
break
user_data[1]=int(add_M)+int(user_data[1])
method_txt(username,user_data[1])
print("添加成功")
def transfer(username):
'''转账模块'''
remove_U = input("请输入你要转入的账户")
remove_M = input("请输入你要存入的金额")
with open("db.txt",mode="rt",encoding="utf-8")as f:
for i in f:
user_data = i.strip().split(":")
if username == user_data[0]:
break
user_data[1]=int(user_data[1])-int(remove_M)
method_txt(username,user_data[1])
with open("db.txt",mode="rt",encoding="utf-8")as f:
for i in f:
user_data2 = i.strip().split(":")
if remove_U == user_data2[0]:
break
user_data2[1]=int(remove_M)+int(user_data2[1])
method_txt(user_data2[0],user_data2[1])
print("转账成功")
def withdrawal(username):
'''提现模块'''
remove_M = input("请输入你要提现的金额")
with open("db.txt", mode="rt", encoding="utf-8")as f:
for i in f:
user_data = i.strip().split(":")
if username == user_data[0]:
break
user_data[1] = int(user_data[1]) - int(remove_M)
method_txt(username, user_data[1])
print("提现成功")
def select(username):
'''查询模块'''
with open("db.txt", mode="rt", encoding="utf-8")as f:
for i in f:
user_data = i.strip().split(":")
if username == user_data[0]:
print(user_data)
def main_atm():
'''程序主函数'''
res = login()
while 1 in res:
print("请选择命令:"
"1.充值"
"2.转账"
"3.提现"
"4.查询")
cmd = int(input("请输入操作命令"))
if cmd ==1:
add(res[1])
elif cmd == 2:
transfer(res[1])
elif cmd == 3:
withdrawal(res[1])
elif cmd == 4:
select(res[1])
else:
print("请输入有效命令")
main_atm()