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) + '\n'
            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) + '\n'

                user2[2] = str(int(user2[2]) + money2)
                user_info[w2] = ' '.join(user2) + '\n'

                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值

  

posted @ 2018-01-16 21:05  minkillmax  阅读(147)  评论(0编辑  收藏  举报