python atm作业详解_Python之ATM学习

# -*- encoding: utf-8 -*-

# Author:MENG LING

#ATM界面

def ATM():

"""ATM欢迎界面的函数"""

print("="*14,"Bank of ABC","="*14,"\n")

print("{:^42}".format("welcome my ATM"),"\n")

print("="*14,"Bank of ABC","="*14,"\n")

#用户信息

user_list =[

{"name":"root","balance":10000,"password":"111"},

{"name":"admin","balance":30000,"password":"123"}

]

#验证密码是否正确

def check(user_name,user_password):

"""验证用户名与密码匹配的函数"""

for i in range(len(user_list)):

if user_name == user_list[i]["name"] and user_password == user_list[i]["password"]:

return i #密码匹配上返回id值,否则返回None值

#定义用户登录成功后操作界面的函数

def interface():

"""用户登录成功后操作界面的函数"""

print("="*14,"用户操作界面","="*14,"\n")

print("1. 查询")

print("2. 取款")

print("3. 存款")

print("4. 退出")

print("="*42,"\n")

#定义用户查询信息的函数

def inquire(user_id):

"""查询账户余额"""

print("%s账户名的余额是:%d元"%(user_list[user_id]["name"],user_list[user_id]["balance"]))

print("")

#定义取款函数

def withdrawal(money):

"""定义取款"""

i = user_list[user_id]["balance"] - int(money)

if i >= 0:

user_list[user_id]["balance"] -= int(money)

else:

print("账户余额不足\n")

#定义存款函数:

def fund(money):

user_list[user_id]["balance"] += int(money)

chance = 3 #允许3次用户名或密码输入错误

while True:

ATM()

user_name = input("请输入您的用户名:")

user_password = input("请输入您的账户密码:")

user_id = check(user_name,user_password)

if user_id != None:

print("登录成功\n")

while True:

# 1\ 打印功能提示

interface()

# 2\ 获取用户选择

num = int(input("please put num:"))

# 3\ 根据用户选择做出相应功能

if num == 1:

inquire(user_id)

elif num ==2:

money = input("请输入取款金额:")

withdrawal(money)

inquire(user_id)

elif num ==3:

money = input("请输入存款金额:")

fund(money)

print("%s账户存入%s元成功"%(user_list[user_id]["name"],money))

inquire(user_id)

elif num ==4:

exit()

else:

print("你输入的号码不存在,请重新输入!")

#3次输错密码退出

else:

print("账号或者密码错误\n")

if chance >1:

print("用户名或密码错误,您还有",chance-1,"次机会,请重新输入\n")

chance-=1

else:

print("对不起,您输入用户名或密码错误已达3次")

break

上面是第一版自己写的函数版本的,后来在朋友的指导下又写了一版类和方法的:

# -*- encoding: utf-8 -*-

# Author:MENG LING

class ATM():

def __init__(self):

self.name = "root"

self.passwd = '111'

self.balance = 10000

def login(self):

for i in range(3):

name = input("请输入账号:")

passwd = input("请输入密码:")

if self.name == name and self.passwd == passwd:

print("欢迎进入ATM机!")

self.menu()

else:

print("输入错误!")

def menu(self):

print("=" * 14, "用户操作界面", "=" * 14, "\n")

print("1. 查询")

print("2. 取款")

print("3. 存款")

print("4. 退出")

print("=" * 42, "\n")

while True:

num = int(input("请输入相应的值:"))

if num == 1:

self.yue()

elif num ==2:

self.get()

elif num ==3:

self.save()

elif num ==4:

print("欢迎下次光临!")

exit()

else:

print("输入号码错误!")

def yue(self):

print("账户当前的余额为:%d"%(self.balance))

def get(self):

money = input("请输入取款金额:")

i = self.balance - int(money)

if i >= 0:

self.balance -= int(money)

self.yue()

else:

print("余额不足!")

def save(self):

money = input("请输入存款金额:")

self.balance += int(money)

print("已存入 {%s} ,余额为 {%s}"%(money,self.balance))

if __name__ == '__main__':

atm = ATM()

atm.login()

不得不说

确实简洁好多

加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值