开始上路了一点点

   小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('	',i2)
            choice2 = input('请输入需要购买的种类名称>>:')
            if choice2 in data[choice]:
                while not exit_flag:
                    for i3 in data[choice][choice2]:
                        print('		', i3)
                    choice3 = input('请输入您需要购买的商品>>:')
                    if choice3 in data[choice][choice2]:
                        for i4 in data[choice][choice2][choice3]:
                            print('			',i4)
                        choice4 = input('请输入您需要购买的品种>>:')
                        if choice4 in data[choice][choice2][choice3]:
                            print('				',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课程,我们可以多多交流。同时也欢迎大神们来给我指指错,要是更好的实现方法,分享一下,小女子在这里感激不尽。

      练功去了。

原文地址:https://www.cnblogs.com/little-hunter/p/6286222.html