• record-09 ATM 过程思想 综合练习


    #__author: hasee
    #date:  2018/1/16
    # user_info.txt包含内容:
    # zhangsan1 123456 3500
    # zhangsan2 123456 4000
    # zhangsan3 123456 4500
    # zhangsan4 123456 5000
    # zhangsan5 123456 5500
    # zhangsan6 123456 6000
    # zhangsan7 123456 6500
    # zhangsan8 123456 7000
    # zhangsan9 123456 7500
    f = open('c:\user_info.txt')
    user_info = f.readlines()
    print(user_info)
    f.close()
    
    user = []
    result = 0
    while result != 1:
        # 1、程序提示用户输入账号
        print("请输入账号:")
        # 2、用户输入账号
        # 3、程序接收用户的输入
        name = input()
        # 4、程序提示用户输入密码
        print("请输入密码:")
        # 5、用户输入密码
        # 6、程序接收用户的输入
        password = input()
    
        # 7、程序对已经接收到的账号、密码进行校验
        # 7.1 程序先从文件中读取有效的账号、密码信息
    
        # 7.2 将接收到用户输入与文件中读出来的信息进行比较
        # 7.3 如果用户输入与文件一致,则有效,不一致则给出相应提示
    
        for w, u in enumerate(user_info):
            # print("***********************")
            # print(u)
            u1 = u.split()
            if u1[0] == name and u1[1] == password:
                result = 1
                user = u1
                break
            elif u1[0] == name and u1[1] != password:
                result = 2
                break
            else:
                result = 3
                # print("***********************")

    为什么不用上面图片的形式,是因为for w,u in enumerate(user_info)每次都会循环一次,显示结果为:

    所以将结果标记为不同的数字,对应不同的状态,在结果外输出

        if result == 1:
            print('登陆成功')
        elif result == 2:
            print('密码不正确')
        else:
            print('账号不存在')
    
    while True:
        # 1、在登陆成功后,提示用户选择服务
        print("请选择服务类型:1-查询余额 2-取款 3-转账 0-退出")
        # 2、用户输入选择的服务选项
        # 3、程序接收用户的输入
        choice = input()
        # 4、程序判断用户选择的服务类型
        # 5、如果用户选择1,程序则显示当前账户的余额
        if choice == '1':
            print('当前账户余额:%s' % user[2])
        # 6、如果用户选择2,程序提示用户输入取款金额,并完成后续的取款处理
        if choice == '2':
            print("请输入取款金额")
            money = int(input())
            if money % 50 != 0:
                print('金额不合法')
            elif money > 1000:
                print('不能超过单笔限额')
            elif money > int(user[2]):
                print('余额不足')
            else:
                print('金额合法,开始进行取款处理')
                user[2] = str(int(user[2]) - money)
                user_info[w] = ' '.join(user) + '
    '
                print(user_info)
    
                f = open('c:\user_info.txt', 'w')
                f.writelines(user_info)
                f.close()
    
                print('当前账户余额:%s' % user[2])
        # 7、如果用户选择3,程序提示输入收款账号、转账金额,并完成后续的转账处理
        if choice == '3':
            # 7.1 程序提示用户输入收款账号
            print('请输入收款账号:')
            # 7.2 程序接收用户的输入
            name2 = input()
            # 7.3 判断收款账号是否有效
            result2 = 0
            for w2, u in enumerate(user_info):
                u2 = u.split()
                if u2[0] == name2:
                    user2 = u2
                    result2 = 1
                    break
            if result2 == 1:
                print('收款账号合法')
                # 7.4 如果账号有效,提示用户输入转账金额
                print('请输入转账金额:')
                # 7.5 程序接收用户的输入
                money2 = int(input())
                # 7.6 程序进行转账金额校验
                if money2 > 2000:
                    print('超过转账单笔限额')
                elif money > int(user[2]):
                    print('余额不足')
                else:
                    print('金额有效,开始进行转账交易')
                    # 7.7 如果金额合法,进行转账交易处理
                    user[2] = str(int(user[2]) - money2)
                    user_info[w] = ' '.join(user) + '
    '
    
                    user2[2] = str(int(user2[2]) + money2)
                    user_info[w2] = ' '.join(user2) + '
    '
    
                    print(user_info)
                    f = open('c:\user_info.txt', 'w')
                    f.writelines(user_info)
                    f.close()
            else:
                print('收款账号无效')
    
        # 8、如果用户选择0,程序终止执行
        if choice == '0':
            break

    辅助理解:
    name='my name is ganhaiyan'
    a=name.split() #将字符串转为列表
    a[0]='her' #通过索引更改值
    print(a)
    b=' '.join(a) #将列表a转为字符串 ,此时的字符串已经不是之前的字符串
    print(b)
    a =['a','b','c',12,12.3,True]
    for y,i in enumerate(a): #enumetate表示索引,a表示列表序列
    print(y,i)

    print(a[1]) #为b #序列进行索引可以找出对应的i值

      

  • 相关阅读:
    Ajax核心对象和AjaxPro框架
    ASP.NET XML与JSON
    jQuery中Ajax的应用
    jQuery中操作表单与表格
    IOS 非常流畅的滑动tableView
    提高自己应用性能的总结架构篇
    LazyCode 自己开源的一个类库
    iOS 自己写的对话框中加入三个输入框
    icmp 流量抓取 转发 代理(2)
    sublime text ctags插件使用
  • 原文地址:https://www.cnblogs.com/minkillmax/p/8298792.html
Copyright © 2020-2023  润新知