1.编写计数器功能,要求调用一次在原有的基础上加1

def func():
x=0
def counter():
nonlocal x
x+=1
return x
return counter
counter = func()
print(counter())
print(counter())
print(counter())
print(counter())
print(counter())

2.周末作业

编写ATM程序实现下述功能,数据来源于文件db.txt

0、注册功能:用户输入账号名、密码、金额,按照固定的格式存入文件db.txt

1、登录功能:用户名不存在,要求必须先注册,用户名存在&输错三次锁定,登录成功后记录下登录状态(提示:可以使用全局变量来记录)

下述操作,要求登录后才能操作

1、充值功能:用户输入充值钱数,db.txt中该账号钱数完成修改

2、转账功能:用户A向用户B转账1000元,db.txt中完成用户A账号减钱,用户B账号加钱

3、提现功能:用户输入提现金额,db.txt中该账号钱数减少

4、查询余额功能:输入账号查询余额

import os
def recharge():
''' 充值功能'''
name_inp = input("请输入要充值的账号>")
money_inp = input("请输入要充值的金钱>")
with open("db.txt","r",encoding="utf-8") as f ,\
open(".db.txt.swap","w",encoding="utf-8") as f1:
for line in f :
if name_inp in line :
name,pwd,money = line.strip().split(":")
new_money = int(money_inp)+int(money)
f1.write(line.replace(money,str(new_money)))
else:
f1.write(line)
os.remove("db.txt")
os.rename(".db.txt.swap","db.txt") def transfer():
'''转账功能'''
transfer_name_inp = input("请输入转账人姓名:")
collector_name_inp = input("请输入收账人姓名:")
money_inp = input("请输入转账金额")
with open("db.txt","r",encoding="utf-8") as f ,\
open(".db.txt.swap","w",encoding="utf-8") as f1:
for line in f :
if transfer_name_inp in line :
transfer_name,pwd,transfer_money=line.strip().split(":")
new_money = int(transfer_money)-int(money_inp)
f1.write(line.replace(transfer_money,str(new_money)))
elif collector_name_inp in line:
collector_name,pwd,collector_money=line.strip().split(":")
new_money = int(collector_money)+int(money_inp)
f1.write(line.replace(collector_money,str(new_money)))
else:
f1.write(line)
os.remove("db.txt")
os.rename(".db.txt.swap","db.txt")
def cash_withdrawal():
'''提现功能'''
name_inp = input("请输入提现账号的姓名:")
money_inp = input("请输入提现的金额:")
with open("db.txt","r",encoding="utf-8") as f ,\
open(".db.txt.swap","w",encoding="utf-8") as f1:
for line in f:
if name_inp in line:
name,pwd,money = line.strip().split(":")
new_money = int(money)-int(money_inp)
f1.write(line.replace(money,str(new_money)))
else:
f1.write(line)
os.remove("db.txt")
os.rename(".db.txt.swap","db.txt") def query():
'''查询功能'''
name_inp=input("请输入你要查询的用户名:")
with open("db.txt","r",encoding="utf-8")as f :
for line in f :
name,pwd,money = line.strip().split(":")
if name_inp in line:
print(money)
break def register():
'''注册'''
username = input("请输入注册的用户名:")
with open("db.txt","r",encoding="utf-8") as f:
res = f.read()
if username in res :
print("该账号已存在,注册失败")
else:
password1 = input("请输入注册的密码:")
password2 = input("请再输一次密码:")
money = input("请输入你的初始金额:")
if password1 == password2 :
with open("db.txt","a",encoding="utf-8") as f1 :
f1.write(f"{username}:{password1}:{money}\n")
else:
print("两次输入的密码不同,注册失败")
def login():
'''登录功能'''
list1=[]
while True:
user_inp = input("your name >")
if os.path.exists(f"locked/{user_inp}"):
print("该账户被锁定")
else:
pwd_inp = input("your msg >")
with open("db.txt","r",encoding="utf-8") as f:
for line in f :
username,password,money = line.strip().split(":")
if username==user_inp and pwd_inp == password:
print("登录成功")
return 1
else:
if list1.count(user_inp)==2:
with open(f"locked/{user_inp}","w",encoding="utf-8") as f:
pass
print("锁定账号")
else:
list1.append(user_inp)
print(f"该账号已经输错{list1.count(user_inp)}次")
#主程序
dict0={
"0":[exit,"退出"],
"1":[register,"注册"],
"2":[login,"登录"],
}
dict1={
0:[None,"退出"],
"1":[recharge,"充值"],
"2":[transfer,"转账"],
"3":[cash_withdrawal,"提现"],
"4":[query,"查询"]
}
def order(dic):
'''判断指令'''
while True:
for i in dic:
print(f"{i}:{dic[i][1]}")
cmd =input("请输入指令>")
if not cmd.isdigit():
print("请输入数字")
elif cmd in dic:
res = dic[cmd][0]()
return res
elif cmd == "0":
print("退出")
break
else:
print("请输入正确指令")
while True:
res = 0
res = order(dict0)
if res:
order(dict1)

day16 本日作业+周末作业的更多相关文章

  1. day11 本日作业+周末作业

    目录 一.今日作业 1.编写文件copy工具 2.编写登录程序,账号密码来自于文件 3.编写注册程序,账号密码来存入文件 二.周末综合作业: 1.编写用户登录接口 2.编写程序实现用户注册后,可以登录 ...

  2. day03 作业 and 周末作业

    请输出 name 变量对应的值中 "e" 所在索引位置? # name = "leX leNb"# num = 0# while num < len(na ...

  3. [福大软工] Z班 团队作业——系统设计 作业成绩

    团队作业--系统设计 作业链接 http://www.cnblogs.com/easteast/p/7709763.html 作业情况 这次作业大家完成度都很高,大家的团队分工,任务布置都安排得很到位 ...

  4. 如何使用git 提交作业 收作业

    如何使用git 提交作业 收作业 方法论: 今天就来用一个通俗易懂的自然模型来解释Git的commit,pull和push.不过,我们首先要理解两个名词,remote,local. remote,翻译 ...

  5. day3(第一周)周末作业

    1.创建字符串变量的三种写法及其区别# 代码:单引号 ''# 双引号 ""# 多引号 ''' '''# 区别:单引号和双引号没有任何区别,一般用于单行字符:多行字符用多引号.## ...

  6. 10月20日MySQL数据库作业解析

    设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表 ...

  7. Linux 第30天: (08月5日) 练习和作业

    变量脚本 1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 server_ip=`if ...

  8. xv6的作业翻译——作业1 - shell和系统调用

    Xv6的lecture LEC 1 Operating systems   L1: O/S overview L1:O/S概述   * 6.828 goals 6.828的目标   Understan ...

  9. C语言第四次作业-嵌套作业

    一.PTA实验作业 题目1:7-4 换硬币 1. 本题PTA提交列表 2.设计思路 第一:定义三个整型变量f,t,o,分别代表五分,两分,一分的数量 第二:输入待换金额x 第三:令f=x/5;t=x/ ...

随机推荐

  1. Express4.x之API:express

    express()表达式 express的方法 express功能分析 一.express()表达式 创建Express应用程序.express()函数是express模块导出的顶级函数.(相当于HT ...

  2. a标签伪类link,hover,active,visited,focus区别

    <div id="content"> <h3><a class="a1" href="#">a标签伪类l ...

  3. [apue] 一个快速确定新系统上各类限制值的工具

    对于在不同 Unix 系统之间移植程序,最重要的事情就是确定新系统的一些编译时.运行时固定或不固定的限制值了.例如文件路径最大长度 PATH_MAX.进程最大可打开文件句柄数 OPEN_MAX.用户可 ...

  4. MVC、MVP、MVVM模型

    在学习vue.react的过程中,总能看到MVVM模型,那么MVVM究竟是什么,下面将我最近看到的资料以及自己的想法总结一下. 与MVVM相似的,还有MVC.MVP,先从MVC.MVP这两个入手,方面 ...

  5. hystrix信号量和线程池的区别

  6. linux网络编程-socket(2)

    当客户端调用close函数的时候,服务器的read函数读到的数据是0读到文件结束通知,表示对端关闭了tcp连接 我们现实实现下面的功能: 1.tcp客户端从标准的输入流中得到输入数据发送到服务器,服务 ...

  7. Maximum Subsequence Sum(java)

    7-1 Maximum Subsequence Sum(25 分) Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A con ...

  8. java基础-java与c#的可变参数

    正文 可变参数,必须最为参数的最后一个参数:可变参数只能有一个: c#可变参数例子:       class Program { static void Main(string[] args) { T ...

  9. SpringBoot项目jar包启动脚本

    startup.bat @echo off set path=X:\xxxxxxx\Java\JDK\jre\bin START "项目名" "%path%\java&q ...

  10. JavaWEB实现qq邮箱发送验证码——qq1692700664

    // 随机验证码public String achieveCode() { String[] beforeShuffle = new String[] { "2", "3 ...