#__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 = 0while 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值