Python小练习更改版(更改一部分代码,与错误)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python小练习更改版(更改一部分代码,与错误)相关的知识,希望对你有一定的参考价值。
很佩服那些大神们,每天都能抽出时间来写博客,在我的计划里每天都能写写新学习的东西,但是做起来来好难,每每都会懒惰,导致学习进度一拖再拖;
上传完第一篇练习后才发现跟预期想的不一样,解题的思路还是一片混乱,在写一个程序之前,还是应该有一个需求流程图,这样在码代码的时候,才不会抓耳挠腮;
加油!
此次,更改了一部分代码,将第一次的错误与未完成的部分完成,增加了注释,使读者能够有所参考;
#!/usr/bin/env python #coding:utf-8 import sys class Shop(object): def __init__(self): self.Red = "\033[1;31m" self.Gre = "\033[1;32m" self.Res = "\033[0m" self.shop_list = [{"1:phone": 2000}, {"2:ipad": 1500}, {"3:ice_box": 500}] self.cars = [] self.customer_expense = 0 with open(‘user_file.txt‘,‘r‘) as fp: user_list = eval(fp.readline()) # 用户的名字与密码转换成字典 with open(‘lock_name.txt‘,‘r‘) as fp2: lock_name = eval(fp2.readline()) # 锁定的用户为列表 with open(‘money_list.txt‘,‘r‘) as fp3: money_list = eval(fp3.readline()) def nameCheck(self,a): #########名字检测状态函数 if a in self.user_list and a not in self.lock_name: return 0 #如果名字在user_file里面,且没在锁定文件里面的话,返回0 elif a in self.user_list and a in self.lock_name: return 1 #名字在user_file里面,且被锁定,返回1 else: return 2 #否则返回2 def passwdCheck(self,a,b): ##########密码检测函数 count = 3 while count > 1: try: if b == self.user_list[a]: return 0 else: count -= 1 print self.Red,"密码错误,剩余%d次" % count,self.Res b = raw_input("请再次输入你的密码: ") ######更改部分给用户机会输入密码 except KeyError : return 2 else: return 1 def checkAfter(self,b,c,dd): ##########状态检测完成后的动作 if b == 0 and c == 0 : print self.Gre,"恭喜你(%s),登陆成功!!!,欢迎你来到我们的商店!"%dd,self.Res #成功后动作进到商店 self.shopCounts() return self.money_list[dd] elif b == 1 : print self.Red,"对不起,你(%s)的账号被锁定,请联系客服!!!"%dd,self.Res #不成功则动作回到初始位置 pass elif c == 1 : print self.Red,"密码错误,账号将被锁定",self.Res self.nameLock(dd) else: prompts = self.Red+"账号(%s)不存在,是否创建用户(q|Q退出): "%dd+self.Res#不存在则动作到注册位置 confirm = raw_input(prompts) if confirm.upper() == "Q": #######增加退出接口 pass else: self.signName() def signName(self): #########注册账号函数 while True: sign_name = raw_input("请输入你要注册的账号(q|Q退出!):") value = self.nameCheck(sign_name) if sign_name.upper() == "Q": #####增加退出接口 break passwd = raw_input("输入你的密码: ") if value == 2: print self.Gre,"congratulations,账号可用",self.Res money = raw_input("输入账号资金: ") if money.isdigit(): print self.Red,"""name: %s passwd: %s money: %d""" %(sign_name,passwd,int(money)),self.Res confirm = raw_input("是否确认以上信息(y|Y确认,其它返回重来): ") if confirm.upper() == "Y": self.user_list.setdefault(sign_name, passwd) #######更改部分,用户不确认也会将信息存入文件 self.money_list.setdefault(sign_name, money) ####### with open(‘user_file.txt‘,‘r+‘) as fp: fp.write(str(self.user_list)) with open(‘money_list.txt‘,‘r+‘) as fp2: fp2.write(str(self.money_list)) break else: print self.Red,"重新来过",self.Res continue else: print self.Red,"资金错误,返回重来",self.Res continue else: print self.Red,"账号不可用",self.Res continue def nameLock(self,a): ##########锁定账号函数 self.lock_name.append(a) with open(‘lock_name.txt‘,‘r+‘) as fp: fp.write(str(self.lock_name)) def shopCounts(self): #########商店部分函数 # for key,value in shop_list.items(): # print key," : ",value #打印商店内容 for i in range(3): for key,value in self.shop_list[i].items(): print key,value def shoping(self,b): ##########购买函数 while True: prompts = self.Gre+"请选择你要的商品编号(q|Q,退出结算): "+self.Res index = raw_input(prompts) if index.upper() == "Q": print self.Red,"购物结束,去结算!",self.Res self.money_list[name]=str(b) #####结算部分 with open(‘money_list.txt‘,‘r+‘) as fp5: fp5.write(str(self.money_list)) break if index.isdigit(): index = int(index) b = self.shopcar(index,b) else: print self.Red,"你选择的商品不存在,请确认你的选择!!!",self.Res self.shopCounts() def shopcar(self,a,b): ####购物车函数 shop_money = self.shop_list[(a-1)].values()[0] # print b if b >= shop_money: print self.Gre,"congratulations!,商品已加入购物车",self.Res self.cars.append(shop_money) b -= shop_money self.customer_expense += shop_money print self.cars return b else : print self.Red,"账户余额可能不足哦,还剩%d"%b,self.Res return b maomao = Shop() if __name__ == "__main__": while True: name = raw_input("请输入你的账号(q|Q退出):") if name.upper() == "Q": sys.exit() else: passwd = raw_input("请输入你的密码:") b = maomao.nameCheck(name) ######接收用户检测状态值 c = maomao.passwdCheck(name,passwd) #####接收用户密码检测状态值 d = maomao.checkAfter(b,c,name) ########接收用户的moneye值 maomao.shoping(int(d)) ####处理用户购物动作
加油,每天进步一点点,都是不一样的自己;
以上是关于Python小练习更改版(更改一部分代码,与错误)的主要内容,如果未能解决你的问题,请参考以下文章