那一夜, 我竟然做了这样的事儿...
2021-10-28那一夜, 我竟然做了这样的事儿…
问题: 用Python做数据分析时, 安装相关的包会报错
解决方案: 请使用我做的一键安装Python数据科学包小工具:)
最近喜欢上了这种写问题解决类文章的结构,就是先说问题和解决方案,而把详细思路放在后面.因为据我观察,大家更喜欢知道如何解决,而不是分析和解决思路.
话说Python学都学了, 门也入了,不搞搞数据分析实在说不过去. 于是老老实实找来<<Python for Data Analysis, 2nd Edition>>, 翻开第一页, “欲练神功, 挥刀…”, 抱歉串台了, 是”欲练神功, 先装包包”. 包嘛, Python最NB的两大法宝之一.Python之所以NB,就是因为它就像万能的百宝箱, 能满足您的一切需求 (当然了,生理需求还得靠吃喝拉撒睡以及花钱解决,但最近朝阳群众发挥出色,学钢琴有危险…), 而包,就是百宝箱里的宝贝啦.
按照书的要求, 拿Python搞数据大体需要以下包:
numpy
pandas
matplotlib
lxml
seaborn
statsmodels
scipy
patsy
scikit-learn
beautifulsoup4
我一看, 嘿, 您别说, 除了不认识的, 就是认识的. numpy, Python搞数学的利器, 最近帮我做线性代数作业好用的一批, 那矩阵运算功能, 嗷嗷好用, 比我算的快多了而且没错过, 反正错了我也发现不了. pandas, 之前数据分析入门时用过, 而且还能处理Excel, 好东西. beautifulsoup4, 非常哇塞, Python看家功能 - 爬虫的基础包, 分析HTML, 找个神秘代码什么的, 嗷嗷好用. 剩下的,就是它认识我, 我不认识它了. 不认识没事儿, 装包咱会呀, 给Python装包可比装B简单多了. 走你! 直接打开Windows Terminal, 执行:
1 | pip install <包名> |
然后,我就收到了这样温馨的提示:
我去, 不是说好要做彼此的天使么, 为何如此为难一个单纯善良的少男? 这满屏的红色都是什么玩意? 没关系, 书中自有颜如玉, 打开 <<Python for Data Analysis, 2nd Edition>>, NB, 不愧是一部超级好的Python数据分析教材, 装包装出错一点没讲, 如此不多赚稿费的行为, 请允许我为您点赞.
这下就有点尴尬了. 话说我只是个使用者, 说好听点, 数据科学领域的学习者, 难道还没在知识的海洋里徜徉, 我刚到沙滩就被晒太阳的比基尼小姐姐绊倒了? 当然我其实不介意, 只是总觉得中华民族伟大复兴事业刚刚如火如荼开展, 我怎么能就这么四仰八叉躺在知识海洋的沙滩上胡吃闷睡呢? 绝不允许呀! 于是, 我决定动用我不怎么丰富的知识找找思路.
网络问题? 确实Python的包都是从互联网的库里下的, 但是我已经把库改成了清华大学开源网站, 不会经过太平洋海底的光缆, 无非就是从海淀跑到西城, 这网络还不是咔咔的?
好吧, 为了确保不是晚高峰堵车导致数据包全卡在了三环路上, 我从网上把需要的包手动一个一个地下载到本地, 我本地离线安装, 这下没问题了吧?
结果, 奇迹没有出现, Windows Terminal 还是仿佛满山杜鹃花, 红成了一片. 我就奇怪了, 为什么我最爱的 00992号港股就没这么红呢? 8块出头的股价什么时候才能涨到80? 为什么人生不如意, 十有八九? 难道阿拉伯著名哲学家说的都是对的?
难道是Windows 11的问题? 自从把系统升级到了Win 11, 我已经被漂亮的输入法工具栏迷上了, 甚至为了随时见到它的身影, 我把积攒多年词库的QQ输入法都抛弃了, 你们知道里面有多少优雅的陪伴我成长的词汇? 不可能, 不可能是Windows 11的问题. 我的理性思维告诉我, Windows 11这么漂亮, 不可能会有错! 而且作为 “中国反舔狗协会北京市西城区西长安街街道分会副会长” 同时兼任”中国反颜值即正义协会海淀区马连洼街道软件园分会男秘书”的我, 从不相信长得好看就不会错, 所以肯定不是漂亮的Windows 11的错, 就这么愉快而理智地决定了!
难道是我包下错了? 不可能, 我的Python是最新的3.10版本, 而我下的每一个包都写明了是 for 3.10, 作为61分高分通过大学四级英语考试的我而言, for 3.10 里的那个for简直就是明白无误地告诉我这是给3.10版Python用的, 怎么可能我下错包? 那种下了一个晚上<<七个男子闯入年轻夫妻家然后发生不可描述事件.mp4>> 最后一看是TM葫芦娃的2B行为, 肯定不是我干的, 我怎么可能下错包? 我怎么可能用512K的ADSL拨号上网下了一宿然后下个葫芦娃…
包没错, Win 11没错, 我也没错, 大家都没错, 那错的是什么? 难道其实Windows Terminal 里面红色的Error其实是安装完毕的意思? 难道这是美帝的最新阴谋, 目的就是让我这样为中华崛起而奋斗的年轻才俊知难而退? 嗯, 很可能是这样. 我已经决定close掉这个问题, 安然入睡. 但是, 我胸前隐藏的红领巾告诉我, 勇敢的狮子座黄金圣斗士, 要勇敢面对, 不要就这样睡去啊! 而且您睡前不想去个洗手间么?
唉?! 想去洗手间的念头出现在脑海里, 迅速激活了我大脑丘脑前核群以及穹窿峡的反馈, 难道是这样? 赶紧起床打开笔记本电脑, 对, 是那台ThinkPad W系列移动工作站, 是的, 联想的移动工作站非常好用我的朋友, 赶紧在我的每一行安装代码后面加上了那串神秘的字符:
1 | TOKYO HOT Original Movie Collection |
抱歉抱歉我脑袋调错信息了,是
1 | pip install <包名> --user |
哈哈哈, 见证奇迹的时刻, 所有包安装完毕! 没有报错! 没有问题! 没有红色!
搞定了包, 我突然想到, 遇到这样问题的肯定不止我一个, 大家都是Python的使用者而非程序员或专家, 遇到问题难道就如此知男而退? 这难道不会让人男上加男或者左右为男? 我觉得, 作为一个受党教育多年的超龄少先队员, 我有必要把安装所有Python数据分析需要的包做成一个简单的能一键成功的工具包, 而且本着开源的精神, 我应该把包以及代码都放到Github上. 于是, 就有了我维护的这个仓库:
Data Science Packages for Python (Github)
Data Science Packages for Python (Gitee)
使用方法很简单, 我也在仓库首页写了readme, 简单到家啦
没想到整个过程最麻烦的不是写bat程序, 也不是下载包, 而是把包放到哪里供大家使用. 放到网盘然后分享? 请允许我对国内的网盘环境表示遗憾. 免费的不好用, 好用的不免费也不敢用就是目前国内网盘市场的现状.
那就只能Github了. 国内访问Github真是太TM一言难尽了. 整个git push过程令人抓狂, 每次报错的信息都不一样, 要么是”人家去洗澡了”, 要么是”人家要睡觉了”, 要么是”人家要边洗澡边睡觉了”, 要么就是连理由都懒得找了直接就卡那里一动不动. 每次看着Git Bash报错都唤起了我对美国联邦政府的愤恨, 要不是你们瞎闹腾, 我至于还得弄个Gitee仓库玩儿双飞, 不是, 双修吗? 每次挂两个仓库push两次, 你知道我多累吗? 一个已婚带娃男人的肉体, 禁得起这么折腾吗? 不过这次折腾也不是没有收获, 我又知道一件事:
Git上传大文件, 需要安装并启用Git-LFS组件
NB, 从下载到安装全搞定, 问题真的可以Close喽, 睡觉去喽.
当然了说这些不是让您感谢我, 更不是希望您们为了鼓励我给我发红包转账, 虽然我的支付宝微信随便你们往里转账,但你们都了解我, 我是见钱眼开的人吗?
信息碎片化时代,更要读书
2021-09-26信息碎片化时代,更要读书
随着最近某女士回国的消息铺天盖地宏轰炸互联网的各个角落,又一轮正反大辩论开始了。各路人马怀揣着不同的目的和心态纷纷加入,于是又是一番昏天黑地,腥风血雨。人们一方面自己纷纷站队,另一方面给不同意见者挨个儿贴上标签,就和几十年前一样,真是一幅热闹景象。
眼前的一切纷乱和浮躁,让我前些年开始涌上心头的想法愈加强烈。
信息碎片化时代,我们更要读书。
如果非要论证这个问题的合理性,我觉得大概是这么几个前置公理:
公理一: 信息碎片化带来的问题一,是垃圾信息占比极高。
公理二: 信息碎片化带来的问题二,信息碎片化会导致信息接收方的思维更加趋于二维化和扁平化
公理三: 思维趋于二维化和偏平化,会导致更加依赖信息碎片化,从而陷入恶性循坏当中
公理四: 思维二维化和偏平化,最终的结果是人无法建立自己的知识和价值体系,失去自我
所以,跳出信息碎片化怪圈的最好办法,就是回到人类最经典最传统最初的信息获取机制:读书。
读书的好处,那些名人名言早就说烂了,除了那些大家们提到的种种,我对读书最大的感受,就是:
一本书,就是作者一段时间内思想体系的总结
这也是我认为读书区别于其它信息渠道最大的优势。譬如,同样是描写西门大官人,如果你看的是某个自媒体的文章,哪怕是质量再高,那最多也就是个小黄文而已。给读者带来的收获,可能也不过就是一片小爽文罢了。而一旦你看了《金瓶梅》,那你就会穿越几百年的历史,走进一个普通明朝文人的内心,了解他对所处时代的憎恨,批判,否定,以及思考。你还会了解到当时人们的生活方式,市井文化。当然了,还有一些不可描述的文字,其形象,精致,文学价值,也远非现在那些碎片化文章所能比拟。这也正印证了一句话,传播《金瓶梅》小电影是犯罪,传播《金瓶梅》小说就没事,因为人家那是文学艺术,经典名著。
读书的第二个问题,就是选书。选书,我的建议是,先确定你想了解的内容,然后尽量首先选择那些观点更加中立客观的书籍。比如,我目前读的是这本书:
原因就是作为80后,我想更深入地了解我的青少年时期,当时这个国家的领导人到底是怎样的。既然主题选定了,在选择书籍的时候,我会刻意避开那些主流的作品,因为可想而知里面会充满很多主观意识的内容,而这些主观的意识对我来说并没有任何参考价值。于是,我选择了一个外国人的著作。当然能在大陆出版,能想象内容上肯定也会有些考虑和调整,但至少,作者描述了大量的客观事实,而不是作者的主观评价和感受。这样,基本读过本书,我就能在自己的知识体系里初步建立一个对他的信息库,从而为下一步进一步丰富和完善这个库而继续学习。如果不是读书,而是从互联网搜集那些快餐信息,那我想我只能得到两种内容:要么是缺少事实支撑的大量的主流观点,要么是带有浓厚意识形态色彩的信息。而这些对我而言,价值就很低了。
我想,对于现在大多数人而言,读书的最大障碍并非是时间。毕竟玩儿手机的时间就足够读书了。读书的最大障碍,应该是很难坚持。我想解决这个问题,最好的办法就是:
别跟自己较劲,读一本自己想读的书
是的,别问自己该读什么书,就问问自己想读什么书。
一次成功的背诗
2021-09-23一次成功的背诗
话说某晚,我给小米查作业,照例,每次我都会帮小家伙查出N个应该做,但没做的作业,这次也不例外,而且是小朋友最不喜闻不乐见得项目,背诗。
按照之前“熟读唐诗三百首,不会吟诗也会吟”的无脑背诗大法,小米开始了面无表情复读机模式。我在边上表面正襟危坐一脸正经,其实心里想的东西么,似乎也不是那么正经。不过偶尔给一耳朵,发现这次要背的是王安石的《梅花》。
《梅花》 [宋]王安石
墙角数枝梅,凌寒独自开。
遥知不是雪,为有暗香来。
我顿时脑子一机灵,顿时思绪万千,心里开始念叨这个名字,王安石。
最早知道王安石,也是小米这么大,大概就是例行的姓名,年代,头衔,顺便发散一下唐宋八大家以及《元日》《伤仲永》,历史书里再讲讲王安石变法,结束。一个非常平面的人物,给我的最初感觉,就是大哥官做的NB,文章写得NB,还挺喜欢搞创新。
然后,上高中时迷上了了冯梦龙先生的三言(什么明朝白话小说的代表作都是自我安慰,其实我为什么喜欢看,你懂的。。。),里面关于王安石的篇幅着实不小,反正翻来覆去不是难为人家苏东坡,就是号称“拗相公”,老顽固,嫉贤妒能,跟所有好人做对,实在不怎么招人喜欢。
直到后来,真正开始读了《宋史》和相关严肃历史著作,了解了檀渊之盟后宋的积弱,了解了李继迁到李元昊三代党项人对中原的烧杀抢掠,了解了吐蕃的扩张,了解了经济繁荣背后的国家羸弱和巨大危机,了解了歌舞升平背后,一群有理想有志气的爱国青年怀抱着远大的志向走上历史舞台,为了国家富强统一,甘愿奉献一生,不惜背上种种骂名。
王安石,是的,这群曾经豪情万丈的年轻人中,最耀眼的,就是王安石。
王安石,骂你的,说你顽固,瞎折腾,吃饱了撑的想红。夸你的,会挑起大拇指,说你是真好汉,真豪杰,真英雄。
王安石自己的想法呢? 这首《梅花》已经说得很清楚了。我想,如果用我自己的语言去翻译,应该是这样:
我的心中,有一朵花
它不是雍容华贵的牡丹 / 它不是香艳多情的玫瑰 / 它不是人人称道的莲花
它不开在富丽堂皇的高楼 / 它不开在秀美写意的庭院 / 它不开在人潮涌动的花园
它不喜欢和煦的春风 / 它不喜欢热情的夏日 / 它不喜欢多情而丰美的秋天
它没有香气扑鼻 / 它从不引人注目 / 它不渴望名利
它只喜欢在严寒的时刻
为饥寒中的人们
送来温暖
带去清香
如果你也喜欢它
请不要寻找它在哪里
它
就开放在我的心里
我无所谓。我无所谓你们是否懂我,夸我还是骂我。我的梦想早已告诉我人生的方向。我就是我。
王安石,中国伟大的改革家,政治家,思想家,文学家。
是的,把改革家放在第一,这是我心目中王安石的第一头衔。王安石,一个梦想改变世界的男人。
当我哐哐哐把我的想法向着小米娓娓道来,小米竟然主动开始做起了笔记,然后用更大的声音去读诗。没几遍就背完了。
这真是一次成功的背诗经历。
废话,就是没用的话?
2021-09-14废话,就是没用的话?
“听君一席话,如听一席话”
“这个点还没睡的人,一定还没睡吧。”
“谁能想到,一名16岁的少女,4年前只是一位12岁的少女?”
“嘿,咱老北京人,早上一睁眼,您猜怎么着?醒了!”
最近不知为何,突然开始盛行废话梗。看着满篇废话,想必你我的内心颇为崩溃。
可是,请想想一下,如果您收到了一段这样的文字:
“
- 以求真务实的态度,积极参与综合调研。
- 以为领导决策服务为目的,把好信息督查关。
- 以体现xx水平为责任,进一步规范工作。
- 以畅通安全为保障,全力指导机要保密工作。
- 以立此存照为借鉴,协调推进档案史志工作。
- 以安全稳定为基础,积极稳妥做好信访工作。
- 以服务机关为宗旨,全面保障后勤服务。
- 以整体推进为出发点,协调做好xx工作。
- 以周到服务为前提,xx工作迅速到位。
- 以提高服务水平为目标,开始推行xx。
“
此时最能代表你内心真实感受的感想,会是什么呢? 你早已厌恶这样的官样文章,你早已疲于应对浮夸的面子工程,你对形式主义深恶痛绝,你觉得这些信息都是彻头彻尾的垃圾信息。
可是你不敢说。 《皇帝的新衣》并不是童话,是现实。混迹社会多年,你不敢说你的真实想法。但你又有你的坚持,你的原则,你不想违背自己的底线,你怎么办?
“听君一席话,如听一席话”
于是,你也说了一句废话。但是,你的废话里隐藏了你的真情实感,你用这句废话表达了你的坚持,你的原则,你的底线。你用这句废话表达了你对废话的态度,总结起来,废话梗在我看来,最大的闪光点在于:
表达态度,放弃对抗。不想躺平,接受命运。
我想,这也就是我心目中年轻人的样子,勇敢,坚强,幽默,乐观,在生活的压力和理想与现实的差距面前,可以低头,但从未放弃。
向年轻人学习!
释怀,是最好的假期
2021-09-14释怀,是最好的假期
我几乎不怎么看电视剧,尤其国产电视剧,尤其是现代都市题材的国产电视剧。瞎耽误功夫不说,现代都市题材国产电视剧是烂片的重灾区。 一帮大傻X在富丽堂皇且具有浓厚工作室风格的办公室里上演着一幕幕和现实脱节的狗血剧情。俊男靓女们勾心斗角谈情说爱,可就是TMD不干活儿不工作。有点良心的导演,好歹还能在办公室拉上帘来点少儿不宜的情节,如果碰上又没良心又没脑子的导演,那就没一点盼头了。
所以,现代都市题材国产电视剧对我而言,不说吸引,怕是连一点共鸣都没有,直到我碰上了B站出品的这部《突如其来的假期》。
至于怎么碰上的,说来颇有缘分。B站给我推送了一个视频,正是这部剧的片段,一个姐们儿挤公交时摔倒了,直接躺在了地上。结果这个姐们儿没着急站起来,也没顾忌路人的眼光,而是躺在地上,看起了天上白云飘过,给自己放了个小假。
这样的剧情,一般人可能很难引起共鸣,可是我岂是一般人?曾经某日,恰好春暖花开,我骑车到单位,结果刚进大门,也不知道怎么搞的,我就在同事们面前结结实实从我的捷安特XTC 820上直接飞了出去,然后结结实实臀部先着地,然后结结实实躺在了地上。话说当时还没来得及尴尬,也没来得及接收人们的惊呼,躺在地上的我突然发现,自己原来是摔在了路边的草地上。感谢我的250的大脑,老兄也可能看到我躺下的姿势过于安逸,于是切断了我与外界的联系,反而第一时间让我闻到青草的香气,看到了蓝天,白云。于是,我干脆翘起腿,把胳膊垫在脑袋后面,就这么哼着口哨数云彩。捷安特也了解到了我的情绪,于是没有着急向我报告它哪儿摔疼了。就这样,一人一车,在公司大门口的草地上,度过了一个短暂的假期。
所以现在您明白我为什么要安利这部剧了。就这么一个情节,击中了我的内心。选剧如选人,不求面面俱到,只要有一个点能契合,那就是知己呀。
现代女性,都市,怎么想怎么觉得这种题材招人反感,弄不好就两头不待见。好在这部剧的角度比较独特,从女主的内心视角出发,在颇为夸张的剧情中,通过女主出人意料的行为,一点点展示出女主从懵懂,纠结,苦闷,宣泄,到寻找,探求,和解,最终释然的一段人生经历。剧情颇多脱离现实的情节,但这种经历,想必是每个人都要经历的。这正是这部剧能让我看下去的第二个原因。
我们每天都会面对不同的问题,有的只和我有关,有的也会牵涉到别人,但说到底都和我有关。而这些问题之所以成为问题,因为我拿不出更好的解决办法呀。夫妻关系,亲子关系,子女教育,个人发展;今天食堂大妈给我盛的鸡丁真TM少,卫生间防水没做好,骑车没有非机动车道,最近疫情又厉害了,升职加薪依然遥远。。。大的小的,有的没的,这些问题,就像八大行星围着太阳一样甩不开。对了,说着说着就多了个问题,为什么那些科学家把冥王星给开除了?不知道九才是圆满的数字吗?冥王星需要你们开工资?多算一个怎么了???
面对问题,最令人心力憔悴的,怕就是无解。越长大,我以为我懂得越多,结果阅历的增加远远赶不上问题的增速。鸡汤?鸡腿都无法治疗我了。就像没有攻略的游戏,好不容易稀里糊涂打败了BOSS,结果发现这个BOSS只是另一个BOSS的小弟,艹。
在问题面前,特立独行是个很好的姿态。注意,是姿态,不是解决办法。特立独行确实会让自己觉得很爽,很自由,无所畏惧,在问题面前,谁不想说一句WQNMLGBD?可是特立独行,是需要勇气,更需要底气的。
特立独行,追求梦想,个性解放,这些看起来很NB的字眼,其实最大的障碍就是成本。你我皆凡人,普通老百姓,资质平庸,就是空有一番个性,又有多少资本去追求?更何况,多数人连自己追求的是什么都搞不明白,只是为了不同而不同,为了个性而个性,那又有什么用?
本剧则试图用12集的篇幅,向我们展示了女主及身边的朋友是如何面对这些问题。她们的经历完全不同,处于的人生阶段完全不同,面临的情况也完全不同。但她们分别用自己的态度去面对,成长,她们最终没有找到答案,但是她们都在内心深入给自己放了一个假 - 接纳,然后释怀。不讲大道理,这是我能看下去的第三个原因。
带有喜剧标签,难免会加入一些荒诞的内容。装怀孕请假,要把别人扔的破烂沙发搬回家,为了省饭钱不停相亲。。。看起来离我们的生活如此遥远,但仔细想想,这些情节没在我的身上发生过,就是不真实么? 如同女主摔倒后不站起来,躺在那里看蓝天,也许别人眼中是如此荒谬,可这却是我的真实操作呀。
对于我喜欢的,在意的,觉得有趣的,我会想办法去辩护。反之,则多一分都不会关注,不是鄙视,不是抨击,而是无视。唯一算是反击的,应该就是有时,我会故意展示自己的弱点或错误作为陷阱,然后看着别人一下子踩进去。欣赏别人着在我面前展示着优秀,我却暗中享受“你果然如我所想”的快乐。也许,这也是一种释然的态度。我不愿你如此,但我知道世事本来如此,所以我接受你如此,而你果然如此,所以世事果然如此。世界和我想的不一样,但世界和它自己很一样,所以如果我想的能和世界一样了,不也就释怀了?
这部剧能让我看下去的第四个原因,则是时长。类似日剧一样的短小精干,12集,每集30分钟。每集一个主题,由一个极短的情景喜剧引出本期,结尾以女主写给父亲的信作为结束,前后呼应,看着不累。
看下去的第五个原因,风景。对于精致的滨海城市,我从来没有抵抗力。大连,青岛皆是如此,而本剧选择的拍摄地厦门,同样符合。曲折蜿蜒的老街,朝气蓬勃的新马路,还有无需加任何修饰词的海边。情节无聊,看看景色不是也挺好?
剧名《突如其来的假期》,有点像《东京爱情故事》的主题曲《突如其来的爱情》。而本剧女主,性格和相貌也有三分像《东爱》女主角赤名莉香。算是安利本剧的第六大原因吧。
嗯嗯,你看,科学家们凑不齐九大行星,而我硬是凑了9个章节。其实写作本文时,这部电视剧我才看了一半。但是无所谓了,哪怕后面都时糟粕,我也喜欢,我也安利。所谓假期,并非真得要郑重其事请上几天年假,然后跑到另一个地方吃喝玩乐。只要有这么一个时间,一个场景,一个片段,你放松了,然后放下了,这不就是一个跟好的假期么?
释怀,是最好的假期呀。
乡亲们,我胡汉三又回来了
2021-09-13乡亲们,我胡汉三又回来了
话说从8月2日更新完长白山之行的照片,我已经一个多月没更新Blog了。相信关心我的N个朋友们 (请别揭露N == 0的事实,我的心会痛。 至于为什么是两个等号,咱也是Python从入门到接近出家的水准了,一个=是赋值啊大兄弟,两个=才是真的等于呀),一定会奇怪这段时间我在干什么。好的,下面我就满足N个朋友们的小渴望,下面我要自爆八卦时间啦!
话说这段时间,我的主要精力在:
- 工作 (勤恳老黄牛的人设你们爱信不信,我反正信了)
- 俩米的暑假作业以及补作业 (小齐同志给予了我很高评价,说俩孩子对待暑假作业的态度跟我是一样一样的,过奖过奖)
- 小米的机器人二级考试 (好吧,现在乐高课的老师们也都听过了我对小米的怒吼,好爸爸的人设是彻底立不住了,有点想自暴自弃了呢)
- 陪小齐玩儿哈利波特手游 (其实我这么正直,是拒绝游戏的,玩物丧志的道理谁都懂,所以赢下这局我就不玩儿了,只是比我还弱的玩儿家怎么就没有呢我了个去)
- 什么都不想干,就想待着
但我知道,如果再这么下去,好不容易养成的写Blog的习惯就会就此中断,更严重的是,那种每天找时间学习,思考,总结 的节奏也就此结束,而我,也许又将陷入每天庸庸碌碌,两只眼睛不会眺望天空的循规蹈矩状态。我听到了自己内心的呼喊:
我再也不要回到那个状态了,可以平凡,但真TM不能平庸啊
于是,我决定,回来。
话说我准备先git pull然后开始写作,结果就遇到这个问题:
??? 我不在的日子里,坏坏的GitHub竟然不再允许用密码登录,而是必须用网站生成的Token,这是什么骚操作? 再一看,我去,竟然是从8月13日就开始了,话说那天不是七夕节么,为什么微软选择这么一个普天同庆炮火连天的日子干这个,岂不是让我中华大好高质量程序员男儿只能忙着改git设置? 真是危害性不大,侮辱性极强啊。
话说回来,为什么我写作前先要Git Pull? 因为我其实写作地点是飘忽不定的,基本上几台笔记本都是我的写作平台,而我用的HEXO博客系统偏偏是基于本地的,这就要求我每台笔记本都需要有完整的文章备份,不然一旦在某台文章不全的笔记本发布,那我的Blog网站上的文章也就跟着参差不齐啦。
而在不同电脑之间进行数据同步和版本管理的,还有比Git跟好用的玩意吗? 有机会,有机会我跟您聊聊Git和GitHub,绝对是工作学习的好朋友好伙伴。
话说按照GitHub的提示改成用Token登录,赶紧同步好之前的文章,终于可以开始新的写作喽。最近发生的事情其实挺多的,很多东西都想总结总结,一时竟然不知道从何说起。那还是说孩子吧。
这周,小米的机器人等级考试总算结束了。能不能通过已经不重要了,重要的是在整个学习和考试的过程中,我再一次感受到了教育的重要性。
不是教育孩子,是教育父母。
小米这孩子,相对于一会儿一个主意,超级自信的大米来说,其实性格是慢热的。同样进入一个新的领域,大米是东张西望,这里捅一下,那边给一脚,错了也无所谓,所以大米在学习新东西的时候,往往进展会快一些。小米则显得不那么自信,这也不敢试,那也不敢碰,导致学习进度会更缓慢。偏偏我这脾气有比较急躁,直接结果就是对小米的要求让小家伙无所适从,从而更加不自信,更加不敢尝试,恶性循环下去,小米也学不高兴,我也挺着急,结果可想而知。
其实在孩子的教育问题上,我一直认为,在教给孩子自信的问题上,爸爸责无旁贷。一个男人,可以没那么细心,可以不怎么勤快,但是在孩子需要支持,需要鼓励,需要保护的时候,爸爸必须第一个站出来,并且无条件支持孩子。很遗憾,似乎我距离自己设定的及格线好像差的很远。我问题在于,上限其实挺高,孩子不敢淘气,我带头淘气然后爷儿俩一块儿挨说的事儿没少干,因此孩子们其实还挺喜欢和我玩儿,但问题在于,我下限太低了,赶上每个月状态不好的那几天,真是点火就着,我甚至怀疑俩米可能会觉得我精神有问题?
从大米出生的第一天,我就一直被一个问题困扰,孩子会喜欢我这个爸爸的设定么? 做我的孩子,会幸福会开心么?我真能做好么?直到后来,在小齐的帮助下,我明白了一个道理,多陪伴。真的要多陪伴。想当好父母的焦虑是无法根除的,唯有陪伴,可以解忧。
我的Blog里之前一直坚持更新的Python教程,可能要暂停更新了,原因就是我想继续在Python的数据分析这块再深入学习学习。现在的to-do列表已经很长了,所以我想先集中精力各个击破。Python这块我会使用更有效率的办法和您分享我的心得,比如完成的小代码的分享,比如心得体会。当然,我更希望自己的Blog能更好玩儿更有趣,而不是骂街吐槽的场所。
OK,就这样,再见,88,哈哈
我的心里,多了座山
2021-08-02我的心里,多了座山
之前和小齐自驾趟川藏线,走了一圈川西川北,被高反折腾得上吐下泻之余,却也见识到了山的美丽。有雪的,有树的,有缆车的,有温泉的,有6000多米的。。。 当时的感觉是,每天都生活在哇塞之中,到后来多巴胺已经不够用的了,到后来都有点贤者模式。。。 那次之后,我对山开始有了一种满足感,似乎不太像再看什么山了,直到某天,我突然想起来,好像山顶有个大湖的,我还没看过呀!得嘞,长白山,天池,走着!
交通不必赘述,到了长白山才知道,敢情这长白山看天池可以从北东南三个坡都可以看,唯独东坡不行,因为东边不是我们的领土。于是我从最经典的看天池的西坡入手。吭哧坑出怕了1442级台阶,2700多米都快逼出了高反的快乐回忆,好在天公给面子,于是我第一次看到了天池。
蓝宝石般的湖水就这么安静镶嵌在山顶。水下如何暗流涌动我不晓得,但水面竟然如此平静,对于观景台上的人们的赞叹全无反应。酷,太酷。
从西坡还能看到中朝两国的界碑。这也应该是我离国境线最近的一次。不过总觉得这个国界怪怪的。长白山作为满族祖先发祥之地,当初被康熙敇封长白山之神礼典如五岳,并下令封禁圣山,怎么现在就成了中朝界山,而且还有一部分成了朝鲜领土,真是奇怪。好在小齐劝我与揽胜无关之事,不必多想,那就这样吧。
从西坡回来,得知南坡就在这个月刚刚开放,于是又奔向南边。100多公里的路程从长白山西绕到南,可见长白山有多大。到了南坡,潦草走了一小段路,就看到了另一个天池:
由于南坡更高,视野更广阔的,天池的形象也更加清晰。而南坡的风景,远不止天池一处。如背向天池一侧,则是我中华大好河山:
皑皑白云下,山清水秀,壮丽雄浑,大美。
从南坡上山,还能看到瀑布,而雨云,则就在头顶飘过。
当然,还有铁丝网把长白山一分为二。
西南坡都看到了天池,北坡就没在上去,而是在周边转了转。
北坡的瀑布,68米高。
北坡的山峦更陡峭
长白山的植被极为丰富,原始森林覆盖了87%的山区。
花,草,树,长白山美丽的外衣。
住在长白山,美不胜收。
我的心里从此多了一座山的名字。
宝贝儿,一起学Python - 7
2021-07-17宝贝儿,一起学Python - 7 今天咱们做个任务 前篇
本文同步发表于我的blog 小鱼游大海
经过一学期鸡飞狗跳,俩米终于迎来了假期,以及。。。
假期作业。
话说小齐同学把学校留的大米假期作业中的口算部分要求让我看了一下,我一下子头就大了,话说,这要求是不是多了点???
口算内容包括:
- 整十除以一位数
- 整百除以一位数
- 整千除以一位数
- 几百几十除以一位数
- 两位数乘以一位数
- 几百几十数乘以一位数
- 两位数乘整十
- 两位是乘整百
- 一位小数加减口算
每天口算都得包含这九部分内容,做题的同学什么心情我不知道,我这负责出题的反正是想静静。我正准备盘算盘算是用小猿口算或者作业帮之类的出题呢,还是百度一下呢?但是要求内容这么多,怎么想怎么觉得都不靠谱,想一键生成每天的口算题,太难了。
等等。
先等等。
一键。。。???
是的,每次我想偷懒,省事儿把活儿干了,我的脑海里仿佛出现一个声音。
何不用Python乎?
脑子里赶紧过一下大概其的任务流,出题,输出到Excel,排版,然后循环这一过程就可以实现一键生成每天的口算作业。。。这哪一步Python都能干那!
得嘞,这下子我连这期的Python选题都有了。今天,我和您一起,咱们研究研究如何用Python做一个完整的程序。
任务要求: 生成42份假期口算题,Excel格式。要求每份Excel文件包含以上所有内容要点的口算题,每个要点5道题,一共45道题。这些题要求排版规范。以上工作要求一键生成,后续只需要批量打印生成的Excel文件,无需进入Excel编辑任何内容。
实现的效果,大概就是:
目标明确了,下面我们得好好想想这个事情怎么做。按照项目管理中学到的知识,咱们先把项目拆分成一个一个的工作包,或者说,基本单元。
程序大概分成三部分,生成口算题,输出到Excel,然后对Excel进行排版。口算题这部分很简单,用随机数就能解决。输出到Excel,目前我的知识库里openpyxl或Pandas都能完成。至于排版,显然这就是openpyxl负责实现了。
好的,工作包拆解完毕,而且每个工作包都能有技术实现,差不多可以动手了。别看咱PMP认证过期好久了,关键内容还是记得的,看来我这张旧船票,还有机会登上人生巅峰的客船那!
说到这里您肯定骂街了。上一篇刚刚说完Python中列表这种数据结构,怎么这次又是随机数,又是openpyxl,甚至连奠定Python数据分析龙头地位的Pandas都出来了,你这是要干嘛?
这正是我在学习Python中学到最好的学习方法,今天借此机会介绍给您,就是:
边学边用,边用边学。学是用的方法,用是学的目的
我们这个人生阶段学东西,不是为了学历,也不是为了证书,转行显然也不是特别实际。更多的时候,我们希望能引入新的思路解决我们的问题,让我们的时间更有效率,让我们的人生更有意义,最起码的,我们不会觉得自己是机器,是工具。
请问,如果您需要先把所有Python的相关知识都学明白才开始干活儿,您学的明白么?您学得完么?难道不把《Oxford Advanced Learner’s Dictionary》背完,咱还不开口说英文了?
Python就像一座陌生的城市,我们并不需要认识这个城市的每个角落。我们只要了解交规,分得清方向,我们就能在这座城市里徜徉,而指引我们的导航,就是网上丰富的Python教程和资源。而我,仅仅是负责把您带到这座城市的高速出口而已。
第一个工作包,出口算题。我特别推崇一种学习做事的思路,就是我们在整理分析一件事情的逻辑时,最好的办法就是自己先走一遍,然后抓规律。比如,口算题里有这么一项内容:
整十除以一位数
如果是我人工出这道题,会是怎样的思路呢?
- 我先随便想一个一位数,然后乘以10,这就得到了一个整十数。这个一位数显然不能是0。
- 我再想一个一位数,然后用刚才的整十数除以这个一位数。显然,这个一位数不能是0,这样会让除法算式不成立。当然也不能是1,这会让大米乐出鼻涕泡,众所周知,合格的父母是不会让孩子欢乐过假期的。。。
- 然后,我还会想想这个整十数能不能被一位数整除呢? 如果行,那这道题就是一道好题,可以存到Excel里让大米做。如果不行,那这道题就作废了,我还得再想一个,直到我找到一个能被整除的算式为止。
- 我需要找出5道这样的算式。
因此,出一道好题的逻辑就应该是这样的:
这里显然我们需要Python给我们提供这么几个帮助:
- 生成随机数
- 连续生成5道好题
通过分析,我们会发现,其它8种题目要求其实也都需要且仅需要Python提供这两个功能就行了,无非就是随机数的用法不一样而已。
下面,我们就打开浏览器,百度”Python 生成随机数”。Python的学习,离不开搜索引擎的帮助。
我们看看搜索结果,第一条是百度匹配的最佳答案,第二个是菜鸟教程提供的答案,第三个,看网址就能知道这是Python官网的文档。一般而言我比较推荐菜鸟,您甚至可以把菜鸟教程当做Python词典一样使用。我们看看菜鸟是怎么说的。
怎么样,有例子有讲解,还愁学不会么。
这里有几个小细节,您注意一下:
实例里是真正的代码,#之前说过,#起头的这行文字是注释,菜鸟把对代码的解释写在了这里。
咱们之前写代码时都是直接print(),这次多了一个import。是这样。我们用Python写程序时,会调用各种Python提供的功能(好吧,行话叫函数,其实英文都收function),我们就当是各种工具吧。这些工具,有的存放在Python随身的包包里,我们叫内置库,内置库的工具,我们拿过来就用,比如print(),您新建一个Python程序文件,上来就写print(‘小侯哥哥你真帅’),保证正常运行,不会有任何报错或反对意见。第二种,是标准库,这种库里的工具也是Python自带的,但是和内置库不一样的是,这些工具不是Python随身携带的,而是存在Python库房里的,因此需要请Python去库房把工具拿出来,具体的语法就是上面实例给出的:
import <库名>
这里的库名就是您需要的工具所在的库房。至于您需要的功能是哪些Python工具提供的,而这些工具又是在哪些仓库里,就得查Python文档了,说白了,就得百度。像这次,我们需要Python提供随机数功能,就得需要引入random仓库,然后使用这个库里的randint工具来生成一个随机数。
1 | import random #导入random库房,这个库房里存放着各种生成随机数的工具 |
把这个过程转换成一般性的格式,就是:
import 库名
库名.工具名(可选参数1,可选参数2…)
所以,生成一个整十数可以这么弄:
1 | import random |
这里我创建了两个变量double_digit和divisor来存放整十数和一位数分别当被除数和除数。用变量存放数值好处多多,比如好记好理解,利于重复使用。当然了,这里我建议变量尽量起名起的有意义一点,尤其是有实际意义的。不然程序里全是x =, y =,读起来会特别费劲,您会有一种解多元方程的感觉。
好了,现在我们创建了被除数和除数,下面我们还得看看,被除数能否被除数整除?如果能,那这道题就是一道好题。于是,我们要请出所有编程都会涉及的最基础概念,条件。
条件本身在我们的生活中就是无处不在的。条件给的合适,我就追求这份工作;姑娘长得漂亮,我就没事多跟人家搭搭话;后面司机老拿远光晃我,我就。。。在编程中,条件也是极为重要的十字路口,它能决定下面程序要做什么。
“被除数能否被除数整除”本身就是一个条件,它决定着未来的走向,如果把这段逻辑用“伪代码”表示,大概就是这样:
1 | double_digit 是被除数,divisor是除数 |
插一句,伪代码其实是一种特别好的帮我们整理分析思路的工具,尤其是简体中文版:)
那么,Python是如何实现这段条件判断呢?
1 | double_digit = 10*random.randint(1,9) #生成被除数 |
好了,到这里,我们就完成了两位整十数除以一位数除法题的主要逻辑。但是,这显然仅仅是一个开始。这段代码仅仅是生成了一道除法题,但是,我们最需要的事情,它一件没做:
- 如果是好题,得帮我存起来,这样后面才能输出到Excel表里呀
- 如果是坏题,那光显示“这是一道坏题”不行啊,您得给我出好题才行啊
- 我们需要5道好题,这个也没实现
所以,下一篇,我们来实现以上的所有需求。
这一篇,我们接触了不少内容,算是我写这个系列文章以来,干货较多的一次了,显然,开车的情节也少了,也乏味了不少,后面我会持续改进,呼呼。
下面,我以问题的形式帮您回顾一下今天我们谈到的内容,如果有问题答不出来,您可能就得再读读这篇稍显无聊的文章了..
- 我们决定用编程解决一个问题的时候,最好的做法是什么?是马上百度?是马上查书?马上问别人? 还是。。。?
- 用Python编程时,为什么有时候我们可以直接写程序,有时候,我们需要import <库>?
- 如果 a = 3,那么print(a)可以直接让屏幕输出3么,如果不行,需要怎么做?
- 请用条件判断做这么一件事, 定义两个变量 a和b,分别赋值,然后判断a和b的大小,输出’a比b大’,或者’a’比’b’小
咱们下周见喽,么么哒
宝贝儿,一起学Python呀-6.md
2021-07-10宝贝儿,一起学Python呀 - VI - 什么结衣雅美,我全都要!
Python中的列表和循环
还记得上篇结尾,我留的小作业吗?
1 | name='长泽雅美' |
是的,打印name, 结果是’新垣结衣’。相信随着新垣结衣和星野源宣布合体,无数中国宅男纷纷表示无比的悲痛,更有甚者开始分析中国老爷们儿完爆日本男人的99999条理由,反正不知道星野源这家伙到底用了什么手段迷惑了我们新垣结衣。
想必您也看出来了,别人着急我不急,急坏身体无人替。为什么我能如此镇定?因为我是长泽雅美的粉儿。。。
常规性跑题。话说 name = ‘长泽雅美’ 您都知道,这是一个赋值语句,作用是把一个值赋值给变量name. 这里咱们也别费劲讲什么变量啦,内存啦,指针啦什么的。我不会肯定是一个原因,另外就是咱们拿Python干活儿,一时半会儿用不上这个。等真能用上,估计您也得转行程序员了。
上篇也说了,Python对待变量的态度很随便。不用声明变量支持的数据类型,您灌什么值变量就是什么类型。但是这里有个问题,就是取变量存的值时,Python只会取最近一次存入的,就如同上面例子中,输出name的结果是新垣结衣。
有身体好的大哥说了,选什么选,老子全都要!什么雅美里美结衣悠亚阿香的,都给我整来!那普通的数据类型是满足不了您了,这时,我们就得请列表出山喽!
1 | name = ['石原里美','新垣结衣','长泽雅美'] # []表示这是列表类型,列表里的元素用,隔开 |
怎么样,像不像您买了栋大别墅,然后把小姐姐们都请进来入住?在Python中,表示列表的标记就是[],列表里每一项用,隔开。列表里的每一项都可以是任意的数据类型,而且无需一样,比如:
1 | list1 = ['联想',1984] |
这里的列表list1有两项,字符串’联想’和数字1984。
现在小姐姐都在您的大房子里了,怎么把怹们挨个请出来呢?聪明的您一定想到了,print()呗。好吧,我们print(name)试试,结果是:
[‘石原里美’, ‘新垣结衣’, ‘长泽雅美’]
嗯? Python很不讲究,直接把列表给打出来了,这相当于小姐姐们扛着别墅就过来了,不行,我想要,不是,这位身体好大哥想要的应该是其中某一位小姐姐,对吧?把这句话翻译成专业点的术语,就是我们要访问列表中的项。
可以。
列表通过索引定位列表中的每一项,相当于给每位小姐姐都编了号。当然,按照搞计算机大哥们的习惯,编号从0开始。不知道为什么大哥们这么喜欢0。。。所以,我们可以这么访问小姐姐们:
1 | name = ['石原里美','新垣结衣','长泽雅美'] |
用索引除了访问列表中的项,也可以更新列表中的项,比如:
1 | name[2] = '三上悠亚' |
那就是把原来的长泽雅美换成了三上悠亚。
或者,身体好的大哥说,4位小姐姐老子也能对付,不用替换,直接把三上加进来!
那就得用到列表自带的append方法了。
1 | name.append('三上悠亚') #列表变量.append(想添加到列表的值) |
这时,name就变成了
1 | name = ['石原里美','新垣结衣','长泽雅美','三上悠亚'] |
append 方法会直接把项目添加到列表结尾。
或者这位小哥哥又说了,三上悠亚在我心中地位第一,干什么给她放最后?给我放最前面!
得嘞这位爷,咱也别费劲了,我告诉您一个办法,您爱放哪儿放哪儿行不?
1 | name.insert(0,'三上悠亚') #insert方法用于把项目插入到列表中,格式就是 列表变量.insert(想插入的索引,想插入的项目) |
用insert方法,您爱放哪都行,行了吧?
以上咱们聊的是用索引访问列表中的项。身强力壮小哥哥又说了,用索引一个一个的来不痛快,而且小姐姐太多也记不住索引,能不能一口气把小姐姐全请出来?
说来简单,直接用循环就行了。话说一般计算机语言中,循环和条件判断都是非常重要和核心的。Python的循环主要是for循环和while循环,其中for循环提供了很好的访问列表的方法,简单粗暴,来咱们走一个:
1 | girls = ['石原里美','新垣结衣','长泽雅美'] # 定义一个列表存放数据 |
看见了吧,就是这么简单。这里需要注意的是,i 本身也是一个变量,这个循环里,先定义一个i用于存放列表中元素,然后按照索引顺序遍历列表中的每一项,然后把此项数值赋给i,然后print()把i的内容输出,然后循环访问列表中的下一项,直到遍历完毕。
另外我们也引出了Python中写代码一个很重要的内容,缩进。和其它语言不同,Python不用{}标识代码块,编写Python代码时,主要的区分代码块的标记就是tab。这里的tab也可以用4个空格代替,但是要一致,不能一会儿tab一会儿四个空格。这个缩进不能省略,上面的例子中如果没有缩进,会直接报错。
还有一个重要的概念,就是字符串也可以看做列表,具有列表的特点,比如通过索引访问字符串中的元素,这个就请您自己试试。
好了,到了留作业的时候,请问,以下的代码输出结果是什么?
1 | slogan = '让世界充满爱' |
今天就到这里,祝您愉快,咱们下篇再见。至于下篇咱们聊什么?让我想想吧,我现在满脑子都是长泽雅美。。。
宝贝儿,一起学Python呀 - 番外篇
2021-07-02宝贝儿,一起学Python呀 - 番外篇
话说《宝贝儿,一起学Python呀》第五篇正在激情创作中,嗯,说白了就是没写完,拖延了。。。 但为什么还要突然插一个《番外篇》呢?难道是要恰饭加广告?
其实我是不反对啦,但这样的美事一时半会儿不会发生。番外篇的由来是这样的,一直以来,我都会把自己的文章放在我的Blog 小鱼游大海和微信公众号上,但是这里其实有个问题,因为我使用Markdown写文章,但是微信公众号对于Markdown的支持比较一言难尽,因此我之前都是找转换器进行转换,但是问题依然存在,比如,我特别喜欢的Markdown的代码区块功能,能显示代码行号,代码高亮,显示效果几乎和VS Code写代码完全一致:
看起来很舒服,对吧? 然后转换成HTML发布到Blog上,似乎效果也不错。
结果放到微信公众号里,就变成如此尊容了。。。
语法高亮没有了,行号没有了,而且直接堆成了一行,手机竖屏下根本就显示不全。。。
我也思考了几个方案,比如:
1 | <li>对代码区块进行截图,然后插入图片</li> |
难道真的没辙了?这时,我想起了一位哲人说过的话:
没有什么是百度解决不了的,如果有,那就换个浏览器再百度一次
那就以”公众号 代码区块”为关键字搜索一番,您猜怎么着?还真有货耶!
一位大侠制作的转换工具 貌似能解决这个问题。咱们试试:
1 | print('我是第一行代码') |
看起来好像可以呀? 那就先试试,不行再说。不过最好还是得看看大侠是怎么实现的,万一哪天这个工具关闭了,就不妥了呢。。。
做点自己想做的事情并不容易,但也很有乐趣,从学Markdown,在Gitee部署图床,部署HEXO Blog系统,把HEXO部署到GitHub仓库,把Blog建立到Github… 发现一点问题,就解决一点问题,直到把工作流理顺,还是很有成就感的。有时候我也在想,每天都面对着同样的屏幕,面无表情地拖拽鼠标,就一件显而易见的问题发无数封邮件跟无数人解释。。。挣钱糊口,给别人打工,无所谓乐趣不乐趣,但还是希望自己的人生能多一点色彩,不然,灰头土脸地跟孩子们说这个世界如何如何有趣,你们要勇敢去探索这样的P话,您自己都不信,孩子能信吗?
目前《宝贝儿,一起学Python呀》第五篇基本有点眉目了,希望这两天就能发布吧,如果大米老人家期末复习顺利的话。
不对,不是大米老人家,是大米小祖宗。。。
再见。