Python使用函数封装简易ATM(V2.0)

 

Python使用函数封装简易ATM(V1.0)icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/127511047该文章的代码是在V1.0的基础上进行升级,使得功能更加完善

print('***********         欢迎使用智汇ATM        ***********')
print('1.注册  2.登录  3.查询余额  4.存款  5.转账  6.取款  7.退卡')
#定义一个列表,存放用户注册信息
users_list=[{'user':'admin01','user_password':'123456','balance':3000},
{'user':'admin02','user_password':'234567','balance':5000},
]
#定义一个空列表,存放用户登录信息
user_status=[]

#用户注册(输入1进入此功能)
def user_register():
    while True:
        register_name=input('请输入用户名:')      #定义一个登录名变量
        for i in users_list:
            if register_name ==i['user']:
                print(f'用户已存在,无法注册')
                break
        else:
            register_password=input('请输入密码:')         #定义一个登录密码变量
            if len(register_password) !=6:              #如果登录密码长度不为6
                print('密码格式错误,密码长度为6位字符')
                continue
            else:
                #把注册信息以字典的形式存放到user_list列表中
                users_list.append({'user':register_name,'user_password':register_password,'balance':0})
                print('恭喜您注册成功')
                print(users_list)
                return

#用户登录(输入2进入此功能)
def user_login():
    while True:
        login_name=input('请输入用户名:')
        login_password=input('请输入密码:')
        for j in users_list:
            if login_name==j['user'] and login_password==j['user_password']:
                global user_status     #定义一个全局变量user_status
                user_status = j        #把j(登录用户) 赋值给user_status
                print(f'恭喜您登录成功,当前登录用户名是:',user_status['user'])
                return
        else:
            print(f'用户名或密码输入错误,请重新输入')
            continue

#用户查询余额(输入3进入此功能)
def user_check():
    if user_status:
        print(f'你当前的余额是:',user_status['balance'])
    else:
        print(f'请先登录后再查询余额')

#用户存款(输入4进入此功能)
def user_deposit():
    while True:
        if user_status:
            deposit_money=input('请输入您的存款金额:')         #定义一个存款金额变量
            if len(deposit_money) >2 and deposit_money[-2:]=='00' and int(deposit_money):
                print('存款成功')
                user_status['balance']+=int(deposit_money)     #存款余额 = 存款余额+存款金额
                print(f'当前账户余额:',user_status['balance'])
            else:
                print('存款失败,请重新操作')
                continue
        else:
            print(f'请先登录,然后进行存款')
        return True

#用户转账(输入5进入此功能)
def user_transfer():
    while True:
        if user_status:
            transfer_user=input('请输入您需要转账的用户名:')       #定义一个其他用户变量
            for i in users_list:
                if transfer_user==i['user'] and transfer_user !=user_status['user'] :
                    transfer_money=input('请输入您需要转账的金额:')
                    if int(transfer_money) > user_status['balance']:      #转账金额不能超过余额
                        print(f'转账金额超过余额,请重新操作')
                        return
                    else:
                        if len(transfer_money)>2 and transfer_money[-2:]=='00' and int(transfer_money):
                            print(f'转账成功')
                            user_status['balance'] -=int(transfer_money)     #存款余额 递减转账金额
                            print(f'当前存款余额:',user_status['balance'])
                            for i in users_list:
                                if transfer_user ==i['user']:
                                    i['balance']+=int(transfer_money)           #对方账户余额 递增转账金额
                                print(f'当前对方的余额:',i['balance'])
                                return
                        else:
                            print(f'转账金额有误,请重新操作')
                            return
            else:
                print(f'未找到该用户,请重新输入!!')
        else:
            print(f'请先登录,然后进行转账')
            return True

#用户取款(输入6进入此功能)
def user_withdrawals():
    while True:
        if user_status:
            withdrawals_money=input('请输入您的取款金额:')          #定义一个取款金额变量
            if int(withdrawals_money) > user_status['balance']:   #取款金额不能超过存款余额
                print(f'取款金额超过余额')
            else:
                if len(withdrawals_money)>2 and withdrawals_money[-2:]=='00' and int(withdrawals_money):
                    print(f'您当前取款金额:{withdrawals_money}',)
                    user_status['balance'] -=int(withdrawals_money)      #存款余额 递减取款金额
                    print(f'当前用户存款余额:',user_status['balance'])
                    return
                else:
                    print(f'输入金额格式有误,请重新操作')
        else:
            print('请先登录,然后进行取款')
            break

#用户退卡
def user_exit():
    if user_status:
        exit_num=int(input('是否确认退卡\n1-是  2-否\n'))
        if exit_num==1:
            print(f'退卡成功')
            return
        elif exit_num==2:
            print(f'已取消退卡')
        else:
            print(f'输入序号有误,请重新操作')
    else:
        print('您还未登录,无需退卡')



while True:
    num=int(input('请输入您选择的功能序号:'))
    if num==1:
        print(f'****欢迎使用注册****')
        user_register()      #用户注册调用函数
    elif num==2:
        print(f'***欢迎登录智汇ATM***')
        user_login()         #用户登录调用函数
    elif num==3:
        print(f'***欢迎使用查询余额功能***')
        user_check()         #用户余额查询调用函数
    elif num==4:
        print(f'***欢迎使用存款功能***')
        user_deposit()       #用户存款调用函数
    elif num==5:
        print(f'***欢迎使用转账功能***')
        user_transfer()      #用户转账调用函数
    elif num==6:
        print(f'***欢迎使用取款功能***')
        user_withdrawals()    #用户取款调用函数
    elif num==7:
        user_exit()
    else:
        print(f'功能序号输入有误,请重新操作')

你可能感兴趣的:(python,python)