zoukankan      html  css  js  c++  java
  • 开始上路了一点点

       小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课程,我们可以多多交流。同时也欢迎大神们来给我指指错,要是更好的实现方法,分享一下,小女子在这里感激不尽。

          练功去了。

  • 相关阅读:
    触发器和存储过程简述
    sql笔记
    AES加密解密代码
    动态获取实体类及类中方法
    springboot metrics elk
    深入浅出Spring Security
    RandomValueStringGenerator
    ExceptionUtils
    spring.main.web-application-type: none
    excel前80%平均分
  • 原文地址:https://www.cnblogs.com/little-hunter/p/6286222.html
Copyright © 2011-2022 走看看