1901100206-自学训练营学习18群-Python入门

学员信息

  • 学号:<1901100206>
  • 学习内容:Python入门14天
  • 学习用时:<25天>

学习笔记


day01

  • 学习内容: day01: 使用github进行协作
  • 学习用时: 合计3小时

收获总结

  1. 在Pull Request时,base:是被合并的,compare:是有改动的,即把这些改动合并到base。
  2. 总体来说,没遇到什么困难,因为不是第一次接触github了。
  3. 这次做作业的过程中,和原来学习过程中遇到英语就退缩的我不一样的是,我开始试着读链接中的英文文档了,即使读得慢也坚持读完。

day02

  • 学习内容: day02:配置本地运行开发环境
  • 学习用时: 2小时

收获总结

  1. 对于作业,先clone文件到本地,修改后commit,然后合并,最后pull request到远程仓库。这一套流程已经很熟悉了。
  2. 难点:在配置vs code开发环境时,面对长长的英文文档,有种没法下手的感觉,读了两段后开始云里雾里。就先跳过了。

day03

  • 学习内容: day03 hello python
  • 学习用时: 10小时

笔记:

收获总结

  1. 函数round(3.1415, 2),后面的参数代表返回几个小数位;
    method:.append(),可在列表里使用;
    print(a, end=” “),end代表输入结果之间以什么结尾

  2. 继续和英文文档死磕到底,看懂了后写作业就不难。


day04

  • 学习内容: day04 控制流程
  • 学习用时: 10小时

收获总结

  1. list.insert(0, w) 第一个数代表位置,第二个数代表插入的东西
  2. 单词:iterate 迭代;单词:indentation 缩进
  3. 写for循环时,感觉不是很难。但搜索后得知有更好的写法。
  4. 写while循环时,却因为定势思维以及思考不够深入而反复得不到正确结果。好在通过搜索也解决了问题。

day05

  • 学习内容: day05 数据容器
  • 学习用时: 20小时

收获总结

  1. 对python数据容器里的函数和methods要多加记忆,以便遇到问题随时拿来使用。
  2. 第二个作业是统计词频,善用这种方法有利于学习数据分析,以后会多加注意。

day06

  • 学习内容: day06 函数
  • 学习用时: 20小时

收获总结

  1. day06的作业是在day05作业的基础上修改的,所以统计英文词频的函数略加修改即可。而且稍稍优化了一下。
  2. 统计中文词频时,就要换个思路,参考别人的代码时,都会有去除标点符号一项。但使用正则表达式时则直接略过这一步,相当于降维打击了。

day07

  • 学习内容: day07 模块
  • 学习用时: 5小时

收获总结

  1. 本次作业只需在day06作业上加以修改即可完成。
  2. 其中text因为是中英文混合,所以原先的代码不能直接拿来用,统计英文字符时需要先剔除中文字符。统计中午字符时同理。
  3. 封装模块时要细读作业要求,main.py与mymodule同目录。

day08

  • 学习内容: day08 异常处理
  • 学习用时: 5小时

收获总结

  1. 本次作业在day07作业上加以修改,在三个函数里加上类型判断,可选type()以及isinstance()。
  2. 在main.py里,加上try: except:,如果输入的不是字符串,比如列表,则打印出错误提示。

day09

  • 学习内容: day09 标准库
  • 学习用时: 8小时

收获总结

  1. 本次作业在day08作业上加以修改,先在函数里多加一个变量,再使用python自带标准库里的Counter(),统计出的结果直接为字典形式。可转换成列表。
  2. 在main.py里,需要先import json,使用open()打开文件时需要填写本地的绝对路径,路径前面以r开头,引号内为路径。

day10

  • 学习内容:<day10 第三方库>
  • 学习用时:<3小时>

收获总结

  1. re.findall(r’[\u4E00-\u9FFF]’, text)
    该用法取出所有中文字符
  2. re.sub(‘[^\u4e00-\u9fa5]’,’’,text)
    该用法将所有非中文字符,替换为空,包含英文字符和标点符号等
  3. os.path用法
    #path = os.path.abspath(file) 显示main.py的绝对路径
    #path = os.path.dirname(os.path.abspath(file)) 显示main.py所在文件夹的目录
    path = os.path.join(os.path.dirname(os.path.abspath(file)), ‘tang300.json’)
  4. 文件读取:
    with open(path, “r”, encoding=’UTF-8’) as f: #open可直接读取本地文件里的内容
    read_one = f.read() #read()将文件内容读取,并存在read_one
  5. 每次作业都是基于上次作业的基础完成的,通过不断升级快捷易用的工具,以便得到更高效率的解决方案。这便是编程的魅力之一吧!
  6. re.findall用法,统计字频时可以使用,统计词频时需要用re.sub。

day11

  • 学习内容:<day11 实战演练1>
  • 学习用时:<6小时>

收获总结

  1. yagmail(邮箱库)
    用法:发送邮件

    1
    2
    yag = yagmail.SMTP(sender, password, '服务器地址') #发件人,密码以及服务器
    yag.send(recipients, '标题', word_str) #收件地址,标题以及要发送的内容
  2. requests(网络请求库)
    最基本的用法:获取该网页内容

    1
    response = requests.get('https://mp.weixin.qq.com/s/pLmuGoc4bZrMNl7MSoWgiA')
  3. pyquery(xml 文档解析库)

    1
    2
    document = PyQuery(response.text) 
    content = document('#js_content').text() #将网页内容转换成文本
  4. 这些第三方库都有着强大的功能,以及配套的详细的用法教程,本次作业只是用了点皮毛,后面更多的玩法有待发掘。

  5. pyquery库的用法未参考教程,直接拷贝作业要求上的代码,复盘时需要再读读原教程。


day12

  • 学习内容:<day12 实战演练2>
  • 学习用时:<6小时>

收获总结

  1. littlecodersh/ItChat: 微信个人号接口、微信机器人及命令行微信,三十行即可自定义个人号机器人。
  2. liuwons/wxBot: 类似的基于Python的微信机器人
  3. zixia/wechaty: 基于Javascript(ES6)的微信个人账号机器人NodeJS框架/库
  4. sjdy521/Mojo-Weixin: 使用Perl语言编写的微信客户端框架,可通过插件提供基于HTTP协议的api接口供其他语言调用
  5. HanSon/vbot: 基于PHP7的微信个人号机器人,通过实现匿名函数可以方便地实现各种自定义的功能
  6. yaphone/itchat4j: 用Java扩展个人微信号的能力
  7. kanjielu/jeeves: 使用springboot开发的微信机器人
  8. 用一个库时,不会的地方先读文档,一般情况下,文档里都会有关于用法的详细解释。

遇到的难点与问题(是否解决)

  1. 可惜了我三个微信号都登不上web微信,好在有教练的帮助完成了任务,只是不能继续体验微信机器人的更多玩法有点可惜。
    ps:网上搜了很多类似案例,目前暂时没看到什么好的解决方案。。。

day13

  • 学习内容:<day13 实战演练3>
  • 学习用时:<8小时>

收获总结

  1. matplotlib用法

    1
    2
    3
    4
    5
    6
    plt.bar((word_data[i][1],),(word_data[i][0],), facecolor='#9999ff', edgecolor='white') #绘制柱状图
    plt.title('中文词频(TOP1-10)') # 显示标题
    plt.xlabel('单词') # 显示x轴名称
    plt.ylabel('词频') # 显示y轴名称
    plt.legend('直方图') # 显示图例
    plt.savefig('word_dict.png', dpi=300) # 保存图片
  2. tplotlib的功能很强大,值得深入学习,本次使用的依然是只是皮毛,以后学习数据分析时会继续研读文档。

遇到的难点与问题(是否解决)

  1. 网上的文档和教程都很丰富,经过搜索到第一种解决方案,先将统计的结果转换成csv文件:
    1
    2
    3
    4
    with open('dict.csv', 'w') as csv_file:
    writer = csv.writer(csv_file)
    for key, value in word_dict.items():
    writer.writerow([key, value])

然后使用panda库读取csv文件,再使用matplotlib绘图。但此种方案实现起来有点复杂。

  1. 第二种解决方案,将统计结果转换成字典,遍历字典里的键值当做坐标值—出自知乎

day14

  • 学习内容:<Python14天入门营总结>
  • 学习用时:<>
<总结>
  • 2019年7月26日,我读到了新生大学的一篇关于自学编程的文章,作者在标题里说他写出了通过未来的代码,这引起了我的好奇心。点进去读完后,我就报名了,当晚就开始了学习。

  • 事实上,我早就购买了李笑来老师的自学是门手艺一书,并读完了Part one,还在xue.cn上做习题。但是却和以往一样,坚持了一段时间后,我停了下来,原因正如李笑来老师所说:在最初“学”的阶段,社交也是极为重要的。而一个人的学习就是很难坚持下来,没有社交,且目标不明确,所以我选择了加入自学营,和一堆人一起学习。

  • 自学营设计的14天作业,难度是循序渐进的,我觉得最大的优点是每次作业都是基于上次作业的基础完成的,而且通过不断升级快捷易用的工具,以便得到更高效率的解决方案。这是让我们不重复造轮子,用前人的智慧解决自己的难题。而且基于Python有那么库可用,更是这个编程语言的优势所在。

  • 最后两次作业是学习wxpy库的使用,它可以让我们实现微信个人号的自动化操作,https://github.com/youfou/wxpy ,功能非常强大,可惜了我几个微信都无法登录,好在有教练的帮助,最后也完成了作业。

<下一步计划>

两个选择:

  1. 重读自学是门手艺,用2到3个星期的时间读完,并在GitHub上同步打卡学习进度。

  2. 自学 MIT OCW 6.0001 课程,用一个月的时间看完,并打卡。