文件修改方式:
方式一:读全部,写全部 占内存 省硬盘
方式二:一行行读入,做完更改之后用心的文件来覆盖旧的文件 删除 重命名 省内存 废硬盘
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 ' % (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()