标签:write 阶段 添加 tar pre rod 老男孩 而且 存储
小hunter,原名小兔,生物工程硕士。因为嫌弃现在工作的无聊和低工资,所以在老男孩那边报了一个班,6840,开始了我python之旅,向着生物信息学领域“进军”。
从一开始得很排斥编程,很讨厌debug;到后来会自己查资料,查代码,debug。提交了3次作业后,慢慢发现,自己其实也能把这件事情做好。
那些编程大牛,感觉都像是武侠小说中的盖世英雄一样,分分钟就把问题解决了。不出招则已,一旦出招,就能一招致命,特别的酷炫。我也很想快点成为那样的人,但是吧,毕竟基础差一些,而且没有功底,只能先从基本功开始。就拿“练武不了功,到头一场空”开勉励自己把基础打扎实一下吧。
第一周写的是购物车程序,用到的知识点是字典,文件读写,三级菜单。字典是python中的利器,模样就是{"key":"value"},强大之处在于可以通过key值来访问value值,能够结构化地存储信息。三级菜单是比较难的,用到了很多while和for循环(当时后还不会写函数,思路也理不清楚),就傻傻地写了很多循环。
data={ ‘欧尚‘:{ ‘水果‘:{ ‘樱桃‘:{ ‘进口‘:[‘$100/kg‘], ‘国产‘:[‘$50/kg‘] }, ‘芒果‘:{ ‘进口‘:[‘$50/kg‘], ‘国产‘:[‘20/kg‘] }, ‘苹果‘:{ ‘进口‘:[‘40/kg‘], ‘国产‘:[‘20/kg‘], ‘红富士‘:[‘30/kg‘] }, }, ‘蔬菜‘:{ ‘番茄‘:{ ‘樱桃小小‘:[‘$20/kg‘], ‘大密密‘:[‘$30/kg‘] }, ‘玉米‘:{ ‘美大‘:[ ‘40/kg‘], ‘墨西哥‘:[ ‘30/kg‘] }, ‘韭菜‘:{ ‘本地‘:[ ‘$15/kg‘], ‘山东‘:[ ‘$18/kg‘] } }, ‘巧克力‘:{ ‘费列罗‘:{ ‘经典口味‘:[‘$50/kg‘], ‘樱桃口味‘:[‘$80/kg‘] }, ‘明治‘:{ ‘纯黑‘:[ ‘$40/kg‘], ‘牛奶‘:[ ‘$30/kg‘] }, }, ‘电器‘:{ ‘电冰箱‘:{ ‘博士‘:[‘$600‘], ‘海尔‘:[‘$300‘] }, ‘空调‘:{ ‘美的‘:[ ‘$200‘], ‘格力‘:[ ‘$250‘] }, }, }, ‘家乐福‘:{ ‘水果‘:{}, ‘蔬菜‘:{}, ‘巧克力‘:{}, ‘电器‘:{}, }, ‘沃尔玛‘:{ ‘水果‘:{}, ‘蔬菜‘:{}, ‘巧克力‘:{}, ‘电器‘:{}, }, ‘好又多‘:{ ‘水果‘:{}, ‘蔬菜‘:{}, ‘巧克力‘:{}, ‘电器‘:{}, }, }
以上就是我吃货版本的三级菜单。进入和退出的代码如下:
while not exit_flag: for i in data: print(i) choice = input(‘请输入需要进入的超市>>:‘) if choice in data: while not exit_flag: for i2 in data[choice]: print(‘\t‘,i2) choice2 = input(‘请输入需要购买的种类名称>>:‘) if choice2 in data[choice]: while not exit_flag: for i3 in data[choice][choice2]: print(‘\t\t‘, i3) choice3 = input(‘请输入您需要购买的商品>>:‘) if choice3 in data[choice][choice2]: for i4 in data[choice][choice2][choice3]: print(‘\t\t\t‘,i4) choice4 = input(‘请输入您需要购买的品种>>:‘) if choice4 in data[choice][choice2][choice3]: print(‘\t\t\t\t‘,data[choice][choice2][choice3][choice4]) choice5 = input(‘最后一层,按b返回;按q退出‘) if choice5 == ‘b‘: pass #什么都不做,作为一个占位符 elif choice5 == ‘q‘: exit_flag = True if choice3 == ‘b‘: break elif choice3 == ‘q‘: exit_flag = True if choice2 == ‘b‘: break elif choice2 == ‘q‘: exit_flag = True
哈哈,上交的第一次作业,像是婴儿刚学会爬,匍匐前进。
第二周做了一个较为复杂的购物车,允许客户登录,充值,购买产品。这回学聪明了一些,会用函数了。函数这种东西,我觉得就像长途旅游吧,游客是变量,函数里面的操作是规定好的路途,最后的返回结果就是目的啦。当然这个可能不是很形象,因为函数可以没有参数,返回结果在默认情况下是None,不过也没有什么关系,可能理解为机器会好一些。但是我总觉得理解为旅游,会让我写函数的时候特别高兴,可以规定它去这里,参观这个景点,买这个东西,在这里拍个照等等,写起来就没有那么枯燥了,哈哈。这么复杂的事情,当然就需要一个主函数main了,虽然我不知道我放的东西对不对,但是至少是可行的。Show一下我的main函数:
def main(): balance = login() state =1 while state != str(4): state = input(‘需要充值请按1;需要查看历史记录请按2;直接购物请按3;退出请按4‘).strip() if state == ‘1‘: balance = recharge() elif state == ‘2‘: with open(‘shopping history‘,‘r‘,encoding=‘utf-8‘) as file: print(file.read()) elif state == ‘3‘: print(‘开始购物‘) print(balance) balance_after_shopping = shopping(balance) elif state == ‘4‘: with open(‘user_data‘,‘r‘,encoding=‘utf-8‘) as json_file: user_data = json.load(json_file) user_data[current_user][‘balance‘] = balance_after_shopping print(‘%s账户,您当前账户的余额是%d,欢迎您下次光临‘%(current_user,int(balance_after_shopping))) with open(‘user_data‘,‘w‘,encoding=‘utf-8‘) as json_file: json_file.write(json.dumps(user_data))
main函数的开始就调用了login函数,当然了,因为需要登录吗。不登录怎么买东西,某宝买东西也是要求先登录滴。登录之后就是问客户需要什么操作,充值的话,调用充值函数;查看历史的化,直接读取储存历史的文件;开始购物的化,就开始购物程序了;如果要求退出的化,那就保存历史,然后退出程序。这里面购物程序是比较复杂的,因为涉及到了三级菜单还有客户选择的保存。现在还在爬的阶段,所以代码写的如下:
def shopping(balance): exit_flag = False with open(‘product_list‘,‘r‘,encoding=‘utf-8‘) as json_file: data = json.load(json_file) while not exit_flag: choice = select(data) if choice == ‘b‘: break elif choice == ‘q‘: exit_flag == True else: while not exit_flag: choice2 = select(data[choice]) if choice2 == ‘b‘: break elif choice2 == ‘q‘: exit_flag = True else: while not exit_flag: choice3 = select(data[choice][choice2]) if choice3 == ‘b‘: break if choice3 == ‘q‘: exit_flag == True elif choice3 in data[choice][choice2]: for i4 in (data[choice][choice2][choice3]): print(i4, data[choice][choice2][choice3][i4]) while True: choice4 = input(‘请输入您需要购买的数量>>:‘).strip() if int(choice4) <= int(data[choice][choice2][choice3][‘数量‘]): sub_total = int(choice4)*int(data[choice][choice2][choice3][‘单价‘]) print(‘这项商品总价:%d‘%sub_total) if sub_total<= int(balance): temp = [choice3,choice4] product_list.append(temp) balance -= sub_total print(‘您当前余额为:%d‘%balance) break else: print(‘当前余额不足,请重新输入需要购买的量‘) else: print(‘没有足够的库存量‘) choice5 = input(‘最后一层,按b返回;按q退出‘) if choice5 == ‘b‘: pass elif choice5 == ‘q‘: exit_flag = True if exit_flag == True: print(product_list, balance) save_history(product_list) return balance
第三周的Haproxy的文件处理,还可以,主要涉及到读文件后跳到下一行的概念,还有json的形式的读取。当然程序也是包含了查询,添加,修改,删除这4个功能。就简单说一下跳行吧,起始也是for循环实现的,continue可以帮助从跳出当前循环,进入下一轮循环,这样就会到达backend的下一行了,也就是server那一行读取信息了。
with open(‘haproxy‘,‘w‘,encoding=‘utf-8‘) as f1,open(‘haproxy_backup‘,‘r‘,encoding=‘utf-8‘)as f2: flag = False for line in f2: if line.strip().startswith("backend") and line.strip() == "backend " + backend: flag = True f1.write(‘‘) continue elif not flag: f1.write(line) if flag and line.strip(): ret = line.strip() f1.write(‘‘)
作为一个还只能在地上爬的菜鸟来说,还是多看看书,看看大神们写的代码,每天练习基本功。向着美好的未来努力吧。
同是为菜鸟的你们也在学习老男孩的python课程,我们可以多多交流。同时也欢迎大神们来给我指指错,要是更好的实现方法,分享一下,小女子在这里感激不尽。
练功去了。
标签:write 阶段 添加 tar pre rod 老男孩 而且 存储
原文地址:http://www.cnblogs.com/little-hunter/p/6286222.html