是时候学习python了

简介:

是时候学习python了

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,权当练手了。如何学以致用 -- 知识往问题靠,问题往知识靠

版权声明:
作者:J²
编辑:妞妞
原文地址https://www.cnblogs.com/jijunjian/p/12801513.html

相关文章
|
1月前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
25天前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
16天前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
1月前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
1月前
|
存储 程序员 Python
Python学习的自我理解和想法(2)
今日学习Python第二天,重点掌握字符串操作。内容涵盖字符串介绍、切片、长度统计、子串计数、大小写转换及查找位置等。通过B站黑马程序员课程跟随老师实践,非原创代码,旨在巩固基础知识与技能。
|
1月前
|
程序员 Python
Python学习的自我理解和想法(3)
这是学习Python第三天的内容总结,主要围绕字符串操作展开,包括字符串的提取、分割、合并、替换、判断、编码及格式化输出等,通过B站黑马程序员课程跟随老师实践,非原创代码。
|
1月前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。
|
1月前
|
存储 安全 索引
Python学习的自我理解和想法(8)
这是我在B站千锋教育学习Python的第8天,主要内容是元组。元组是一种不可变的序列数据类型,用于存储一组有序的元素。本文介绍了元组的基本操作,包括创建、访问、合并、切片、遍历等,并总结了元组的主要特点,如不可变性、有序性和可作为字典的键。由于开学时间紧张,内容较为简略,望见谅。
|
1月前
|
存储 索引 Python
Python学习的自我理解和想法(4)
今天是学习Python的第四天,主要学习了列表。列表是一种可变序列类型,可以存储任意类型的元素,支持索引和切片操作,并且有丰富的内置方法。主要内容包括列表的入门、关键要点、遍历、合并、判断元素是否存在、切片、添加和删除元素等。通过这些知识点,可以更好地理解和应用列表这一强大的数据结构。
|
1月前
|
索引 Python
Python学习的自我理解和想法(5)
这是我在B站千锋教育学习Python的第五天笔记,主要内容包括列表的操作,如排序(`sort()`、``sorted()``)、翻转(`reverse()`)、获取长度(`len()`)、最大最小值(`max()`、``min()``)、索引(`index()`)、嵌套列表和列表生成(`range`、列表生成式)。通过这些操作,可以更高效地处理数据。希望对大家有所帮助!