1、编写一个简单的蜗牛ATM的注册和登陆功能,要求如下:

        a、列出两个列表,一个存放用户名,一个存放密码,下标位置一一对齐。注册时,判断用户没是否已存在,密码长度要大于等于6位。如果输入错误要有相应的提示,并退出系统。

       b、如果用户注册成功,则提示用户进行登陆,要求用户输入用户名和密码,只有当用户名和密码均正确才能提示用户登陆成功,否则提示用户名或密码错误,并退出系统。

username = ['zhangsan','lisi','wangwu']
password = ['111111','222222','333333']
def reg():
    print('欢迎使用蜗牛ATM系统')
    un = input('请设置您的用户名:')
    if un.strip() in username:  #去除空格
        print('用户名已存在')
        return False #当前函数结束
    else:
        pw = input('请设置您的密码:')
        if len(pw)<6:
            print('密码长度小于6位')
            return False
        else:
            username.append(un)
            password.append(pw)
            print('注册成功!')
            return True
def login():
    un = input('请输入您的用户名:')
    pw = input('请输入您的密码:')
    if un.strip() in username: #说明用户模输入正确
        i = username.index(un)
        if password[i] == pw:
            print('恭喜登录成功!')
        else:
            print('用户名或密码错误!')
    else:
        print('用户名或密码错误!')  
    return True
if reg():  #有返回值,可作判断
    login()

2、在上题基础上加入错误重试功能,不管是注册阶段还是登陆阶段,一但用户输入错误,都将提示用户重新输入,直到正确为止。

username = ['zhangsan','lisi','wangwu']
password = ['111111','222222','333333']
def reg():
    print('欢迎使用蜗牛ATM系统')
    while True:
        un = input('请设置您的用户名:')
        if un.strip() in username:  # 去除空格
            print('用户名已存在')
        else:
            pw = input('请设置您的密码:')
            if len(pw) < 6:
                print('密码长度小于6位')
            else:
                username.append(un)
                password.append(pw)
                print('注册成功!')
                return True
def login():
    while True:
        un = input('请输入您的用户名:')
        pw = input('请输入您的密码:')
        if un.strip() in username:  # 说明用户模输入正确
            i = username.index(un)
            if password[i] == pw:
                print('恭喜登录成功!')
                break
            else:
                print('用户名或密码错误!')
        else:
            print('用户名或密码错误!')
if reg():  #有返回值,可作判断
    login()

3、在前面的蜗牛ATM项目的基础上进一步改进,要求使用一个二维列表来保存用户名和密码。

例如:users=[['zhangsan','123456'],['lisi','admin123']]

 并添加如下操作主菜单:

************欢迎来到WoniuATM*************

***************请选择操作菜单***************

************1.注册  2.登录  3.退卡************

 用户选择对应的菜单选项进行操作,每次操作完后继续进入主菜单,用户输入3之后可以结束并退出应用程序。

users=[['zhangsan','123456'],['lisi','admin123']]
def reg():
    print('欢迎使用蜗牛ATM系统')
    while True:
        un = input('请设置您的用户名:')
        for item in users:
            if un.strip() == item[0]:   #item[0]即用户名
                print('用户名已存在')
                break  #break出for循环
        else:
            pw = input('请设置您的密码:')
            if len(pw) < 6:
                print('密码长度小于6位')
            else:
                users.append([un,pw])
                print('注册成功!')
                return True #退出整个函数

def login():
    while True:
        un = input('请输入您的用户名:')
        pw = input('请输入您的密码:')
        for user in users:
            if user[0] == un.strip() and user[1] == pw.strip():
                print('登陆成功!')
                return
        else:
            print('用户名或密码错误!')

def get_menu():
    menu = '''
************欢迎来到WoniuATM*************
**************请选择操作菜单**************
**********1.注册  2.登录  3.退卡**********
        '''
    while True:
        print(menu)
        option = input('请输入您需要操作的菜单:')
        if option.strip() == '1':
            reg()
        elif option.strip() == '2':
            login()
        elif option.strip() == '3':
            print('感谢您的使用,欢迎下次在来!')
            break
        else:
            print('选择菜单项错误,请重新选择!')
get_menu()

4、在3题项目的基础上进一步进行改进,要求使用一个列表加字典的形式来保存用户的信息,并增加一个账户余额信息。

用户信息的保存格式如下:

user_list = [{'user':'zhangsan','password':'123456','balance':1000},
             {'user':'lisi','password':'111111','balance':2500},
             {'user':'wangwu','password':'asd123','balance':100}
             ]

添加如下操作菜单,

******************欢迎来到WoniuATM*****************

********************请选择操作菜单*********************

************1.注册 2.登录 3.查询余额 4.退卡************

用户选择对应的菜单选项进行操作,每次操作后继续进入主菜单,用户输入4值会可以结束并退出应用。用户注册成功后奖励3000元账户余额。

user_list = [{'user':'zhangsan','password':'123456','balance':1000},
             {'user':'lisi','password':'111111','balance':2500},
             {'user':'wangwu','password':'asd123','balance':100}
]
current_uer = None  #用于记录当前登陆用户信息的全局变量

def reg():
    print('欢迎使用蜗牛ATM系统')
    while True:
        un = input('请设置您的用户名:')
        for item in user_list:
            if un.strip() == item['user']:   #item[0]即用户名
                print('用户名已存在')
                break  #break出for循环
        else:
            pw = input('请设置您的密码:')
            if len(pw) < 6:
                print('密码长度小于6位')
            else:
                user_list.append({'user':un, 'password':pw, 'balance':3000})
                print('注册成功!')
               # print(user_list)
                return True #退出整个函数

def login():
    while True:
        un = input('请输入您的用户名:')
        pw = input('请输入您的密码:')
        for user in user_list:
            if user['user'] == un.strip() and user['password'] == pw.strip():
                print('登陆成功!')
                global current_uer
                current_uer = user
                return
        else:
            print('用户名或密码错误!')

def check_balace():
    if current_uer:  #None是假,非空则True
        print('当前用户的余额为:',current_uer['balance'])
    else:
        print('请先登陆后,再查询余额!')

def get_menu():
    menu = '''
******************欢迎来到WoniuATM*****************
********************请选择操作菜单*********************
************1.注册 2.登录 3.查询余额 4.退卡************
        '''
    while True:
        print(menu)
        option = input('请输入您需要操作的菜单:')
        if option.strip() == '1':
            reg()
        elif option.strip() == '2':
            login()
        elif option.strip() == '3':
            check_balace()
        elif option.strip() == '4':
            print('感谢您的使用,欢迎下次在来!')
            break
        else:
            print('选择菜单项错误,请重新选择!')
get_menu()

5、继续改进蜗牛ATM功能,功能要求如下:

添加如下操作:

***************************欢迎来到WoniuATM*****************************

******************************请选择操作菜单*********************************

************1.注册 2.登录 3.查询余额 4.存款 5.取款 6.转账 7.取卡************

实现增加的菜单功能。注意:存取要求只能是100的整数倍。

user_list = [{'user':'zhangsan','password':'123456','balance':1000},
             {'user':'lisi','password':'111111','balance':2500},
             {'user':'wangwu','password':'asd123','balance':100}
]
current_uer = None  #用于记录当前登陆用户信息的全局变量

def reg():
    print('欢迎使用蜗牛ATM系统')
    while True:
        un = input('请设置您的用户名:')
        for item in user_list:
            if un.strip() == item['user']:   #item[0]即用户名
                print('用户名已存在')
                break  #break出for循环
        else:
            pw = input('请设置您的密码:')
            if len(pw) < 6:
                print('密码长度小于6位')
            else:
                user_list.append({'user':un, 'password':pw, 'balance':3000})
                print('注册成功!')
               # print(user_list)
                return True #退出整个函数

def login():
    while True:
        un = input('请输入您的用户名:')
        pw = input('请输入您的密码:')
        for user in user_list:
            if user['user'] == un.strip() and user['password'] == pw.strip():
                print('登陆成功!')
                global current_uer
                current_uer = user
                return
        else:
            print('用户名或密码错误!')

def check_balace():
    if current_uer:  #None是假,非空则True
        print('当前用户的余额为:',current_uer['balance'])
    else:
        print('请先登陆后,再查询余额!')

def depoisist():  #存款
    if current_uer:
        money = input('请输入存款金额:')
        if money[-2:] == '00' and len(money)>2 and int(money) > 0: #说明输入的是100的整数倍
            print('当前用户的余额为:', current_uer['balance'])
            current_uer['balance'] += int(money)
            print('存款成功,当前余额为:', current_uer['balance'])
        else:
            print('您的存款金额格式不正确,请检查后再操作!')
    else:
        print('请先登陆后再操作!')

def withdraw():  #取款
    if current_uer:
        money = input('请输入取款金额:')
        if money[-2:] == '00' and len(money) > 2 and int(money) > 0:  # 说明输入的是100的整数倍
            print('当前用户的余额为:', current_uer['balance'])
            if current_uer['balance'] >= int(money):
                current_uer['balance'] -= int(money)
                print('取款成功,当前余额为:', current_uer['balance'])
            else:
                print('您的余额不足!')
        else:
            print('您的取款金额格式不正确,请检查后再操作!')
    else:
        print('请先登陆后再操作!')

def transfer():  #转账
    if current_uer:
        to_user = input('请输入对方账号:')
        if current_uer['user'] == to_user:
            print('不支持给自己的账户转账!')
        else:
            for user in user_list:
                if user['user'] == to_user:
                    money = input('请输入转账金额:')
                    if money[-2:] == '00' and len(money) > 2 and int(money) > 0:  # 说明输入的是100的整数倍
                        print('当前用户的余额为:', current_uer['balance'])
                        if current_uer['balance'] >= int(money):
                            current_uer['balance'] -= int(money)
                            user['balance'] += int(money)
                            print('转账成功,当前余额为:', current_uer['balance'])
                            #print('转账成功,对方当前余额为:', user['balance'])
                        else:
                            print('您的余额不足!')
                    else:
                        print('您的取款金额格式不正确,请检查后再操作!')
                    break
            else:
                print('对方账户不存在,请检查后再操作!')
    else:
        print('请先登陆后再操作!')

def get_menu():
    menu = '''
***************************欢迎来到WoniuATM*****************************
****************************请选择操作菜单*******************************
************1.注册 2.登录 3.查询余额 4.存款 5.取款 6.转账 7.取卡************
        '''
    while True:
        print(menu)
        option = input('请输入您需要操作的菜单:')
        if option.strip() == '1':
            reg()
        elif option.strip() == '2':
            login()
        elif option.strip() == '3':
            check_balace()
        elif option.strip() == '4':
            depoisist()
        elif option.strip() == '5':
            withdraw()
        elif option.strip() == '6':
            transfer()
        elif option.strip() == '7':
            print('感谢您的使用,欢迎下次在来!')
            break
        else:
            print('选择菜单项错误,请重新选择!')
get_menu()

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐