是时候学习python了
“ 学习Pyhton,如何学以致用 -- 知识往问题靠,问题往知识靠”
01
为什么学Python
一直有听说Python神奇,总是想学,虽然不知道为啥。奈何每天写bug,修bug忙得不亦乐乎,总是不得闲。直到有一次与汤哥聊一个数据修复方案时,我只能说出用excel,而领导却说用Python可以非常方便时,我知道是时候学习Python了。于是有了这篇短文。
02
Hello World
有一个关注程序员的笑话:程序员退休后,学写毛笔字,身体端坐,铺好宣纸,墨入砚台,毛笔蘸墨,突然不知如何下笔,苦思良久,写了二字:hello world 。这看似滑稽,确也道出我们程序员是真真的实干派。接下来我们按学习新技能 的标准SOP: code 三部曲 -- 环境,文档, hello world 开始我的文章。
运行环境百度一下,你就知道了。如果是mac,使用推荐使用 homebrew ,一条命令搞定(如果提示 upgrading ... 直接ctrl+c 就开始安装了),输入python3 / python 看到如下结果就表示 ready了(我的电脑上安装了两个版本)。
到这里本来已经可以开始使用vi码代码了,看着还very cool,但发现自己过了那个年纪,idea 装个pyhon 插件十分实用,如下图。智能提示,快速运行,查看结果,实用才香。
开发环境准备就绪,接下来推荐一个入门文档:https://www.liaoxuefeng.com/wiki/1016959663602400, 廖雪峰出品,真心不错。2分钟就可以写出第一个HelloWorld。程序写完了,但他几乎没有任何意义,因为他不能为我们解决问题。
#!/usr/bin/env python3 print("Hello H和J的博客") 输出 /usr/local/bin/python3.7 /Users/jijunjian/learn/mypython/src/HelloWorld.py Hello H和J的博客
要了解一门语言,一些基础内容还是要了解下,如果你有一门语言基础的话,几乎可以立马上手,python是一门高级语言。建议了解下数据类型和变量,字符串和编码,使用list和tuple ,使用dict和set。这些是python的基本数据类型,几乎每个程序都会用到。其他就是条件判断,循环,函数等...然而...
03
学以致用
学了2周,新鲜感消失了,想放弃了,但是心中又无法面对花去的时间,直到学习结构化思维提到:知识往问题靠,问题往知识靠,不断补充知识体系。有了这样的意识问题就来了。
问题:运营反馈某地投放了200个单车,但是监控地图只能看到150辆,要找出缺少的50辆分析原因。
背景:系统中以单车编号为key 存放在redis里,而运维提供的web工具一次只能查一个key。
解决:一个个查,重复200次也能解决问题,但是太麻烦。做为程序员,我们首要做的就是:do not repeat yourself。既然问题要往知识靠,那我刚学的python是否可以快速搞定呢:运维提供的web工具其实就是发起一个http请求,解析返回的json,这些对于python来就就是几行代码的事儿,于是代码就写了好了。真的比重复200次又快,又准。这样的经历比单纯的学习深刻许多。
#!/usr/bin/env python3 import requests import json #单车列表 dataList = [ 'hget mapBike:单车编号1 city', 'hget mapBike:单车编号2 city' ] host = "运维工具地址" headers = \ { "method":"POST", "path":"/execute", "token":"我的token", "user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36" } index = 0; errorCount = 0; for i in dataList: index +=1 body = \ { "redisName": "redis-cluster", "command": i } r = requests.post(host,headers=headers,data=json.dumps(body)) data2 = json.loads(r.text) print("index=%s" % index) if data2["data"] != '城市编号': print("error:%s" % i) errorCount += 1; print("一共:%s" % index) print("error:%s" % errorCount)
有了这次经历,又燃起了学习热情。map/reduce概念是一个有意思的东西,建议大家一定要学习。看大数据书籍里会多次提到。话分两头,又来了一个问题。
问题:新版单车投放功能有一个缺陷,导致已经投放的数万个单车某个属性错误,要按单车编号修正数量。
背景:投放时单车信息保存在了日志表的扩展信息中,dba只能导出格式如下,其他信息已经删除。整个文件30M, 想使用多行编辑,删除多余再使用excel公式生成sql, 想法很好,就是编辑时卡顿...谁用谁我知道
{"bikeNo":"abc123dba1"} 2020-03-07 20:43:31.64747 {"bikeNo":"abc123dba2"} 2020-03-07 20:43:31.64747 {"bikeNo":"abc123dba3"} 2020-03-07 20:43:31.64747 {"bikeNo":"abc123dba4"} 2020-03-07 20:43:31.64747 {"bikeNo":"abc123dba5"} 2020-03-07 20:43:31.64747
解决:这次没思考直接就想到Python了,想法很简单:
1,按行读取,找到最后个“}”,拆分成两个字符串。第二个为时间
2,解析json得到单车编号,
3,拼接bikeNo,与时间生成sql。输出到文件。
想到这里代码也写好了,就是这么快。关键还不会出错。
#!/usr/bin/env python3 import json #读数据文件 with open('/Users/jijunjian/Downloads/daa.sql', 'r') as f1: list1 = f1.readlines() print(len(list1)) #最终输出文件 with open('/Users/jijunjian/Downloads/test.txt', 'w') as f: for i in range(0, len(list1)): list1[i] = list1[i].strip('\n') index = list1[i].rindex('}'); ctime = list1[i][index+1:].strip() jsonString = list1[i][0:index+1] jsonx = json.loads(jsonString) # 可以拼接成 update 语句 f.write(jsonx["assertNo"]+";"+ctime+" "+"\n") print(i)
04
结语
后来与汤哥聊到Python的话题,我们学习Python并不是想成为这个领域的专家,而是当来一个工具来使用。对我而言,这样的程度就够了,能快速解决问题,提供多一个思路。便不在纠结还要学多少了,以后有需求再补充知识体系就可以了。从美菜到哈啰的最近一年多看了10来本书,一直觉得没啥收获,就是没想明白为什么要学。箭靶都没有,只练习拉弓不会有多少提高。
上面的这些问题不一定非要用python去解决,js,java都能实现,也许还更多快。既然学了Python,权当练手了。如何学以致用 -- 知识往问题靠,问题往知识靠
I have a dream to be a good programmer。
让妞妞给我们的博客做了Logo
是时候学习python了的更多相关文章
- 学习python
最近感觉Python 很不错的样子,乘着这次寒假,不如就先学一下吧. 翻看了一些教程,发现<python 简明教程>质量上乘. 我目前学习python就是打算做一些上位机之类的,好像有点杀 ...
- Python学习--Python基础语法
第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...
- Linux运维人员如何学习python编程
Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...
- 新手学习Python时常见的错误
最近学习Python,现在把一些常见的错误总结如下: 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 "Synta ...
- 学习Python的三种境界
前言 王国维在<人间词话>中将读书分为了三种境界:"古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树,独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊消得人 ...
- 1 python学习——python环境配置
1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...
- 如何学习Python
[整理]如何学习Python + 如何有效利用Python有关的网络资源 + 如何利用Python自带手册(Python Manual) http://www.crifan.com/howto_lea ...
- 学习Python的第一课(简单的单元测试)
由于有C#开发基础,感觉学习Python应该不难,主要是一些语法了,再加上现在互联网这么发达. 感觉还是要有思路,否则学什么也只能是什么. 话不多说,简单发下这几天的学习成果吧: 第一次写博客,大家不 ...
- 创业日记-关于学习Python
2015年7月2日 深圳 阴天 学习Python有一个月了,总整感觉Python是一个比较小而灵活的语言. 为什么要学习Python 今年我已入行有9年了,一直在写C#,关于微软的集成环境也用的比较顺 ...
- 学习Python编程的11个资源
用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因 ...
随机推荐
- Ubuntu在Anaconda中安装TensorFlow GPU,Keras,Pytorch
安装TensorFlow GPU pip install --ignore-installed --upgrade tensorflow-gpu 安装测试: $ source activate tf ...
- 【译】Java SE 14 Hotspot 虚拟机垃圾回收调优指南
原文链接:HotSpot Virtual Machine Garbage Collection Tuning Guide,基于Java SE 14. 本文主要包括以下内容: 优化目标与策略(Ergon ...
- JS去除字符串内的空白字符方法
有时我们需要对用户的输入进行一些处理,比如用户输入的密码或者用户名我们就需要去除前后空格,下面写一个去除空白字符的方法 function trim(string = '') { return stri ...
- 201771030106-葛佳诚 实验一 软件工程准备-<初读《构建之法——现代软件工程》有问>
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE 作业要求链接 https://www.cnblogs.com/nwnu-da ...
- vue引入echart Error in mounted hook: "ReferenceError: myChart is not defined" found in
解决办法: // 实例化echarts对象 var/let myChart = echarts.init(this.$refs.myChart)
- 1062 Talent and Virtue (25分)(水)
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...
- PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分)
PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分) 7-40 奥运排行榜 (25 分) 每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如 ...
- 【STM32项目笔记】STM32CubeMX+Keil+Proteus联合实现LED闪烁
摘要 利用STM32CubeMx配置STM32芯片的功能,然后将配置后的内容生成代码,并导出成可以使用Keil打开编辑的文件,在Keil中添加控制代码后,下载到Proteus仿真中,使用仿真观察代码执 ...
- 用SQL*Plus命令启动和关闭数据库
用SQL*Plus命令启动和关闭数据库 1.启动方式 starup或startup open startup nomount startup mount startup read only [x] s ...
- django类视图的装饰器验证
django类视图的装饰器验证 django类视图的get和post方法是由View内部调用dispatch方法来分发,最后调用as_view来完成一个视图的流程. 函数视图可以直接使用对应的装饰器 ...