蓝小柠的博客 https://bleshi.com/ zh-CN 欢迎访问蓝小柠的博客,记录生活,更记录你! Sun, 10 Jul 2022 22:14:00 +0800 Sun, 10 Jul 2022 22:14:00 +0800 我可以在你的青春记忆里让你留下了美好的回忆,我已经很满足了 https://bleshi.com/long-distance.html https://bleshi.com/long-distance.html Sun, 10 Jul 2022 22:14:00 +0800 BleShi 0.序言

本来依旧打算发一些伤痛文学

可是又不必多言

恍惚间

刷到了这篇 公众号文章

就如此一般

人生这条道路上,有人会下车,也会有人上车。

而已......

还是那么的感性

而她

理性

也许,是吧。

有人说

一年的时间

很短

不过是

东西两个半球

13个小时的时差

一年后彼此的距离

早已远不止如此了

1.

经常在网上看到一个文案

在人生的道路上每个阶段都会有不同的好友

总有人会下车

陪你坐到终点站的人寥寥无几

可那些已经下车的人或者昔日友人

再见真的会变得“陌生”吗?

Pic1

2.

阿森和阿豪是发小,从幼儿园到初中都是在一个班,两人在学习上互相扶持着。

这样的状态一直持续到高中。到了高中以后两个人不再是一个学校,两人的关系自然而然就有一些远了。

两人在高中阶段都结交了不同的朋友,有时候阿森经常拿阿豪和高中的朋友做比较,经常问自己谁才是自己最好的朋友。

阿豪和阿森不一样,他大大咧咧豪爽地处理着各式各样的友谊。这和阿森截然不同,他每天想着各种各样的问题。

好在两个人的家距离很近,每天放学以后还是会约着一起玩耍,每逢放假两人还会出来小聚一下。

阿豪有时候还会带上自己在高中时交的朋友,可每次阿豪带上自己新的朋友时,阿森会莫名的感到一些失落。

感觉阿豪离自己越来越远了。

Pic2

街坊里传来喜报,阿森和阿豪双双考上了大学,街坊邻居纷纷前来道喜。只有阿森一人闷闷不乐。

阿豪不解地问向阿森:“为何考上了大学还要如此沮丧?

阿森吐露出自己的担忧:“害怕大学以后就会失去阿豪这个朋友。”阿豪听闻顿时笑出了声音,表示阿森想得太多了,不管什么时候他都是阿森最好的朋友。

大学以后两个人各自忙着一些大学之后的事情。很长时间都没有联系,只是偶尔打一下视频电话。很快大学的第一个学期结束了,两人又约在那熟悉的小店,吃着烧烤讨论着人生。

很快假期结束了,两人在开学前又一次的相约在那家小店。阿森说着不舍的话并表示自己有些对不住阿豪,因为大学之后两人的联系越来越少了,阿森感觉快要失去阿豪这个朋友了。

阿豪听到这话先是一愣,随后大笑起来,紧接着阿豪一脸严肃说了一句令阿森难以忘却的一句话:

“人生这条道路上,有人会下车,也会有人上车。下车的人并不是离你远去,而是换了一个地方等你。我可以在你的青春记忆里让你留下了美好的回忆,我已经很满足了。”

3.

高中毕业后,阿明和小澜成为了恋人。

毕业旅行两人决定在泰山,他们在网上看到,泰山是检验爱情的地方。

热恋中的情侣们,经得住一切的考验。他们看到了绚丽的日出,也仿佛看到两人的未来。

录取结果出来后,两人去了不同的城市。面对爱情两人无所畏惧,坚定着双方的信念。很快一个学期结束了,两人经过一个学期的异地感情不退反进。

假期很快,总感觉在一起没有太久就已经要开学,在一起的时间总是过得很快。

这次的开学到校跟上学期不一样,两人依旧在微信上聊着天,打着视频,却总感觉缺少了些什么。

小澜依旧给阿明分享着每天发生的趣闻异事,阿明也每天给阿澜诉说着每天的快乐。

在这样的日子里,两人过的也算开心,到了放假小澜决定去阿明的城市找他。

小澜和阿明都很期待这次的见面,彼此见到双方竟然有些陌生,见面之前双方都想了很多说给对方的话语,可一见到两个人竟都成哑巴了。

支支吾吾谁也说不出来什么。最后两人只能抱在一起,让对方感受那浓浓的爱意。

他们不是彼此变得陌生,而是千言万语,不知从何处说起。有一万句想对你说的话,最后只有紧紧相拥,和那一句我爱你,真切无比。

Pic3

4.

我们不是变得陌生了,而是我们不知该如何去表达我们自己的情感。

我爱的人依旧是我爱的人,我儿时的玩伴是你依旧是你,我们在不同的道路上前进着,可是回头看,他一直在你身后。

]]>
1 https://bleshi.com/long-distance.html#comments https://bleshi.com/feed/long-distance.html
被赶走前,她在红色电话亭住了一个月 https://bleshi.com/telephonebox.html https://bleshi.com/telephonebox.html Sun, 01 May 2022 18:23:00 +0800 BleShi 朋友圈刷一篇 公众号推文

恍惚间发现

竟是自己高中旁电话亭的故事

起初只以为是一种行为艺术

却未料竟是这般的故事

当时代的尘埃降临于某人之时

或许就是如此的魔幻现实

正如文中那般所言

她走的时候什么也没拿

抱着自己的小狗

光着脚往南边走了

Pic1

4月1日,上海浦西封控第一天,她牵了一只穿着红色衣服的狗,背着包,提着一些东西,走进了小区对面的红色电话亭。

整整一个月,她都住在里面。

4月29日,两个身穿防护服的男人把她赶出了电话亭。她走的时候什么也没拿,抱着自己的小狗,光着脚往南边走了。

4月1日

上海浦西正式封控。有阳光,街道空旷没有行人。

下午,黎柏站在窗前看见了一个女人。女人牵了一只穿着红色衣服的狗,还背着一个包,手里提着一些东西。她在一个电话亭前面停了下来。然后,她走了进去。

四点左右,一床姜黄色的小被子出现在电话亭外的晾衣架上。到了晚上,架子上又换成了一条蓝白相间的毯子。

电话亭后五米就是那个小学,围墙上挂着社会主义价值观的标牌。

电话亭的旁边是一棵树,树上没有什么叶子。

Pic2

4月2日

从3月27号开始,黎柏每天都在买菜,买完菜再分装菜。上海封控后她却感到解脱,连续几天的抢菜很累,现在全上海都抢不到菜,她终于可以休息了。

她又站到了窗户边。那个女人还住在电话亭。昨晚她怎么睡的?电话亭很小,伸展不开,只能蜷缩着。这栋楼的很多人都注意到了电话亭的异常。他们开始在微信群里猜测电话亭女人的身份、年纪。她的打扮看起来很时尚,还扎了一个丸子头。有人说,应该是个年轻女孩。不过上海都封控了,她来这里干什么呢?人们把原因都聚集在那条狗身上,对,肯定是为了能够遛狗,她舍弃了家里的舒适来到电话亭,说不定,就是为了能够让狗在外面走一走?

下午五点半,电话亭旁出现了一辆警车,两个警察走了下来,他们穿着白色防护服,对着住在电话亭里的女人说些什么。看起来,他们情绪平稳,像是日常交流。10分钟后,警察开着车离去。

群里有人说,警察不会是打算捉走她吧?

Pic3

4月3日

黎柏所在的街道第一次发物资,发了蔬菜,发了猪后腿肉。这栋楼没人能出去,焦虑,无聊,而那个女人的出现让人们感到兴奋。人们开始猜测那个女人会在电话亭里住多久。她每天都换衣服,看着是体面人,不像是一个会流浪的人。

她每天都遛狗,遛狗范围很小,就在小学门口和电话亭,范围保持在10米内,来来回回遛半个小时。狗很小,估计是腊肠犬。下午,它在地上拉了一坨屎,女人走过去用纸巾包好放入旁边的垃圾桶。

4月初的上海还是有点冷的。洗澡就别想了。不过她有各种容器和盆,能盛水,还有一个大的拉杆车和黑色的垃圾桶。人们评价她,这个女人具有很强的生存经验。

楼里有人说,封控前和她说过两句话,只知道她没有手机。

Pic4

4月4日

新闻上说,外地医务人员来驰援上海,一个省支援一个区。黎柏看到很多人在讨论上海人凹造型下楼做核酸,她也打算穿得好看点。通知里说,早上六点要下楼做核酸,五点五十分,黎柏开始洗漱打扮。大巴车一辆接一辆开到了楼下,但直到八点,才轮到黎柏做核酸。

楼里住了一家欧洲人,那个男主人很愤怒。人们在群里面接龙展示自己的核酸结果,那位欧洲人十分不解,他认为这是是隐私信息,不该在群里公开展示。

天气还是很好。住在电话亭的女人又在晒被子,晾衣架随着太阳转,朝东北,朝西南。

4月5日

上午九点半,有两个警察站在电话亭外,穿着制服,戴着N95口罩。女人穿着紫色上衣,牛仔裤和白色鞋子,她离警察半米远。旁边晾晒着一床粉色被褥。很快,不到十分钟,警察就走了。

黎柏在买菜软件上抢到了几根香肠两盒豆腐。

Pic5

4月6日

楼里有更多人开始讨论住在电话亭的女士,有人每天都在关注,拍视频,“好像电视连续剧”。有人好奇她从哪里来换的衣服,有人称她为“电话亭女神”。人们看到她一直在晒被子、遛狗,进电话亭前还要脱鞋。

她几乎每天都会换衣服,有时身穿紫色上衣,牛仔裤,白色连衣裙和白色运动鞋,有时是棕色上衣,黑色裤子。而大多数时候,她和狗就在电话亭里呆着。

黎柏这栋楼开始了团购。

Pic6

4月7日

黎柏在家里把团购来的根茎蔬菜用抽被子的真空袋真空保存起来,整个下午她都在做这件事。她的先生说这是伪科学,她又一件件拆掉。

晚上7点半小区音乐会。这是小区第一次放音乐,放了一小时,放音乐的是对面那栋楼,那栋楼里住着很多年轻人。人们很激动,人们很开心。只有一些老年人来抗议有点吵。音响质量一般,但在放迈克尔·杰克逊的《We are the world》这首歌时音效最好,有人吹起口哨,有人在大喊,更多人更着一起唱,不过仅在副歌部分,we are the world。

4月8日

黎柏在家里弹了一首巴赫的曲子。

天气真好。

中午十二点半,电话亭女人又把被子拿了出来,她还提了一个紫色的水桶出来。她把晾衣架放在校园的墙边。

电话亭旁那棵树开始发芽了,树干倾斜,树枝向上冲。

黎柏做了一道水芹炒豆腐干。水芹是她婆婆在封控前寄过来的,放了9天,她舍不得丢,但炒出来的菜很苦,非常难吃。

在一个叫 I Love SHANGHAI 的平台上,黎柏给一个被困在上海万体馆锦江之星的打工男人转了388块钱。那个男人说自己没有东西吃也没有钱。

4月9日

小区又开始做核酸。下午三点半人们下楼发现小区里的花都开了,不过不是盛放,只是零星的开着,有杜鹃,有不知名的紫色的花,所有的树的叶子都绿了很多。黎柏说这是上海最好的时候,以往人们要去野外去公园里四处散步。但现在她连小区不敢多转,虽然她穿得很好看,还戴了遮阳帽。

4月10日

南汇方舱内部情形被传播开来,黎柏加入讨论。她焦虑又愤怒。下午她整理了冷冻柜。

4月11日

楼里开了一个自治“电梯小超市”,物资自取,有橘子、青提、红酒、牛初乳贝贝和啤酒。大家很兴奋。有人把珍藏的茅台酒也放到了电梯里,他说大家每人倒一点,一起喝喝看。黎柏的先生从里面抱走了几罐可乐,放进去了挂耳咖啡和几包中华香烟。很多人说,这是封控以来最开心的一天。

下午五点半,电话亭女人穿了一条背带裤,扎着丸子头,穿着白鞋开始遛狗,她只遛了10分钟。她不太常出来,出来就为了扔垃圾,为了晒被子,为了把外面的盆拿进去。

街上没有人。也没有看见谁给她送物资。

Pic7

4月12日

黎柏尝试叫跑腿给电话亭女人送物资,但跑腿的小哥说现在要去嘉定,没有办法过去。

楼里那个欧洲人又开始说话了。他在群里问,这些龙须面要煮几分钟?楼里团葱,他看到葱了便说,我要葱,我不要绿的那种,我要圆的那种。楼里的人回复说,哦你说的是洋葱。抱歉,洋葱没有。

4月13日

又要下楼做核酸。樱花已经开了,但今天下起了雨,樱花混着桃花被雨打落在地上,一堆一堆的。

电话亭女人一直在电话亭里。她没有出来遛狗。

Pic8

4月14日

又在下雨,还打了雷。黎柏收到很多物资。她还买了十斤澳洲柑橘,10斤150元。小区团了每日鲜语牛奶,虽然黎柏从来不喝蒙牛的任何产品,但现在,她也管不了了。

楼里有人给打浦桥派出所打了一个电话,这几天在下雨,他们很担心那个电话亭女人,希望警察为她找到一个安置点。

4月15日

大晴天。黎柏做了菜,她又收到了物资,是一堆饮料。

电话亭女人又出来遛狗了。电话亭边的那棵树的叶子已经长开了,从嫩绿变成了青绿。

4月16日

电话亭女人在亭子外面开始收拾,两个大袋子,一个红的一个蓝的,旁边还停着一辆共享单车。她穿着白色连体装,在电话亭进进出出。

Pic9

4月17日

全楼开始关注电话亭女人。但小区还是完全封闭的,没有人能接近那个电话亭。

有人飞了一台无人机,这是这栋楼的人和电话亭女士第一次正式打招呼。这次碰面被做成了一个视频,还配了音乐,片头字幕是:“电话亭的日常——邻居们关注的马路邻居。”

树叶长得更大了,阳光穿过树叶在电话亭旁边撒下长短不一的阴影。电话亭女人穿着素色的连体装,扎了个丸子头,穿了双靴子,她弯着腰正在整理东西,然后,她看到了无人机,愣了一下,她举起了双手左右摇晃,又跳了跳,对着无人机打了一个热情的招呼。

视频的最后,是电话亭旁边的大马路,充满阳光,空无一人。

楼长说,电话亭女人活得非常好,行动自如,没有任何疲态。

下午五点,一辆警车停在电话亭旁边。电话亭女人蹲在外面继续整理物品。

Pic10

4月18日

黎柏收到了很多猪肉。她给了一个住在复兴中路93岁的老师寄了物资。

电话亭边上的小学有人穿着防护服进进出出,一些人被带入里面。有人猜测,这个小学可能变成了一个临时方舱。

4月19日

楼里核酸出现了异常,所有人都很紧张。大家说,这真是匪夷所思。

居民自治的电梯超市关停。

那个外国人在群里说:"We would try everything so that nobody from the neighbors had to be sent to the camp."有人回复:"Totally agree。"

4月20日

异常的邻居正式复核为阳性。

那位外国人在群里请求,不出门在自己屋里做抗原检测。有人回复“你完全正确”,“在你身边”。

4月21日

大太阳天,天气好极了。电话亭女士继续晒被子,继续遛狗。

那个外国人在群里发微信不再用英语,也不再愤怒,“收到团购物资了(两个竖大拇指的符号)感谢大家志愿者的帮助!(两个双手合十的符号)”

Pic11

4月24日

一位陌生男士找到黎柏说他想帮忙安置电话亭女人。他让黎柏联系她,想让她步行两公里去他的单位,还说要带她做核酸,让她住在他空闲的办公室,去办公楼顶遛狗。黎柏很警惕,她认为电话亭女人在这里生活了三周,相比住在这里,可能跟着一个陌生男人走了才是真正的危险。

4月25日

上海遭遇了可怕的电闪雷鸣。下午五点左右,天一下子全黑了,你看向远处,那栋最高楼的上面出现了一道白光,那是黑云和白云的分界线。但很快,这条线没了,整片天空全部变为了黑色。云越来越低,大雨很快就落了下来,根本看不清电话亭此刻是什么样子。

黎柏有一个朋友住在方舱,他们紧急避难转移,他们为这个行为专门起了一个名字:“易烊千玺”,意思是,一亿头阳在大迁徙。

黎柏林的先生说,电话亭女人现在该怎么过,不知道水是否漫了进去。

4月26日

大雨过后是小雨。

早上十点,黎柏发现,电话亭女人突然离开了电话亭,她牵着小狗,背着书包,挎着袋子。而在她身边转悠的是一辆警车。她似乎有点愤怒,直直地往前走,那辆警车开得很慢,偶尔女人回过头来对着警车嘟囔几句。然后她的声音变得越来越大,黎柏依稀听到她说:“你想让我死吗?”警察回答:“全程录音录像,没有对你怎样,这是依法办事。”

这两天,附近的居民每天开始“敲锅”,在晚饭后,六七点钟,人们拿起对着锅一阵阵地敲击,有人还吹起了喇叭。黎柏一位教打击乐的朋友开玩笑说,敲锅的节奏还需要学习一下。

Pic12

4月27日

黎柏一位住在徐家汇小区的朋友解封了,他骑车带着水果和方便面,晚上八点半到达了电话亭。电话亭外面放着很多东西,矿泉水,大米,光明的奶粉,泡面,菠萝,橘子,洗洁精。但电话亭里面没有人,里面只有她的衣服,她用衣架整齐地挂在了里面。

楼里收到了螺蛳粉。外国人说:“我觉得我们这周末去广西旅游。下个星期见。”

Pic13

4月28日

晚上十点,黎柏的朋友又骑车去了电话亭。等红绿灯的时他看见了一辆警车,他跟在警车后面,没想到警车就是去往那个电话亭的。警车开得很慢,像是在考察地形,但只是看看就走了。

女人还在电话亭。朋友见警车走了,就上前去和她交流。黎柏的朋友说,她看上去有四十几岁,不是年轻人了。她说她是外地人,之前一直在上海打零工,断断续续地工作,有活就做一点。她没有固定住所,三月底要封城,没有办法付很长时间的房租,就找到这个电话亭住下了。她思维清晰,她强调自己需要直接吃的东西,面包,饼干。而不是米面油。黎柏的朋友说,你可以用这些东西和别人交换,先留着,明天再来给小狗送一点火腿肠。

4月29日

半夜十二点,黎柏准备入睡,她戴好了耳塞眼罩。突然,她先生爬起来说外面怎么这么吵。他们走到窗前,发现电话亭那里正在大声吵架。黎柏马上拿出手机开始拍摄,她还提醒先生把房间里的灯关掉,要有反侦察意识,不能让人知道我们在拍。

楼里的很多人都起来了,大家都听见了争吵声。楼长说:“大白来找电话亭女士了”。

警车停在路边,两个身穿防护服的男人先是把她摁在地上,她啊地一声叫了起来,带着哭腔说:“怎么打人了。”男人起身,走到电话亭里,把她的东西一件一件往外扔,并让她今晚就搬走。女人上前试图阻止,她情绪有些激动地尖叫了起来。其中一个男人见状暴怒,走上前把她扳倒在地使劲摁住。他们又走到电话亭的另一个门,打开,进入,清理。

电话亭女人最后什么都没有拿,她只是抱着自己的小狗,光着脚,往南边走了。

当时正在下雨。

29日凌晨两点多时,楼里有人看到警察又来了。他们让小学的保安把散落一地的东西装进防护服。电话亭很快被清理了。

Pic14

4月30日

电话亭里面空空荡荡,而电话亭的外面多了一个蓝色的封条。

Pic15

Pic16

Pic17

以上三张照片,摄影:豫广

除署名外,其余图片都由采访对象提供

应采访对象要求,黎柏为化名

]]>
1 https://bleshi.com/telephonebox.html#comments https://bleshi.com/feed/telephonebox.html
超星学习通课件下载方法 https://bleshi.com/Chaoxing.html https://bleshi.com/Chaoxing.html Fri, 24 Dec 2021 17:00:00 +0800 BleShi 0.需求

不知不觉又到期末周啦!

又到了一年两度的女娲补天时间

我有一门专业课是开卷考的,老师把课件资料都放在了学习通上让我们打印做好考试准备,但是老师...老师忘记设置可下载权限了

作为一只深度社恐人士,当然不能因为这些小事而去打扰老师!主要是考前才开始下载PPT显得我很临时抱佛脚哈哈哈哈哈

于是就有了这篇文章~

1.现状

Pic1

情况如上图所示,没有下载按钮,批量下载也无法选中课件

Pic2

只可以这样在线查看PPT,没法打印

Pic3

邮件后发现,其实都转变为了一张张图片,可以直接复制保存图片再打印,但是每个PPT都有好多页一个个下载实在是太过于繁琐

2.实现

其实下载起来也很简单啦!

Pic4

先按F12进控制台,然后选择网络,再选择XHR,然后打开消息头

Pic5

点击PDF:就可以下载PDF版本的课件啦!

这时候其实已经可以打印了,如果比较考究的或者有其他需求的

Pic6

可以用Adobe Acrobat DC之类的软件转换下。

]]>
1 https://bleshi.com/Chaoxing.html#comments https://bleshi.com/feed/Chaoxing.html
升入大二的碎碎念 https://bleshi.com/Sophomore.html https://bleshi.com/Sophomore.html Thu, 27 Aug 2020 00:00:00 +0800 BleShi 0.序言

许久未见,本想着努力月更博客,但因疫情在家上网课的生活实在是过于单调,实在没什么可以水的。

不过现在我们即将迎来返校与军训,生活终于重新回归到了种正常的状态,至少在精神压力上不再是原本的养猪式生活了。

1.学生会晋升

前两天新任主席与我进行了沟通,表示了对于我上一学年在新媒体工作上的肯定,并征询我关于是否留任的想法。然而因种种客观原因并不能给到我一个实际的编制,我可以拿到学校的聘书且自称为副部长,也可以享受到与他们相同的待遇,但不能以正式文件的形式确立我的存在

我不知是喜还是忧,比起陪跑的同学来说,至少我还获到了些许学长学姐们的关注,不至于一年白忙活。但殊不知,在下一轮中,我是否会成为陪跑人,落实了基础工作,却终成为了他人晋升工具。

诚然,在这一学年中,我揽下了很多工作,时常承担些紧急任务,上午接到的活下午就能够完成工作;也能够完成部长所布置的各类非常规的工作任务;也偶尔会因自己对于捣鼓网站等一些比普通人稍稍多一点的小技能与作品而收获到些许沾沾自喜。耐心且高效算我给自己的一个标签吧,但这一点似乎在晋升之路上显得并非如此之重要。

走到这一步的人,都有自己的一技之长,另外的两位副部长也各自擅长摄影与手绘等专业技能。对于成为副部长这一结果,我也表示接受,唯一遗憾的是我不被官方文件所承认,另外需要反思的是我距部长还差了多少。

工具人可能永远还是工具人吧,如今的生活早已不是初高中般的以成绩为代表的以结果以产能论英雄了。比起主席们钦定的部长而言,我觉得可能我更缺少的不是工作的能力,而是没有想法,也不懂交流。

一学年以来,不论是正式会议,还是私下交流,同学姐部长们的交流都仅仅停留在“好的收到”、“预览已推送还请审核”、“已更正”这样的阶段,没有参加过一次轰趴与聚餐等活动,甚至连平时的互动也是少之又少。可能因为部长们都是学姐,我不太方便交流,但换成学长做部长,我也不见得能聊得起来。我们的关系仅仅保留在工作层面上,而并不能成为朋友。她们指哪我改哪,她们想要什么需求我就实现什么需求,我不太善于言辞上的撒娇或推诿以体现那种俏皮可爱,也没有自己的想法,无非就是将上级的意志实现出来,可能这就是情商上的差距吧。

可能这就是生活吧。

2.冲头

终于还是迎来了开学,我们学校是打定主意全市第一个开学来做冲头了。按照学校统一部署与安排,我们大二的同学将在 8.29-9.1 期间内分批次返校, 9.2 后开始为期 17 天的军训。一切都是一刀切式的全封闭式管理,全员入校时核酸检测,不得叫外卖或离校。

其实吧,对于很多人争议的不佩戴口罩军训可能较高风险一事,我倒是觉得无所谓,真来了带个口罩也没用。但我不想军训不想开学是真的。

之后了解到 ECUPL 和 DHU 也大都安排在我们学校后几天就返校,我心里也平衡了些,可能我们学校长在荒山野岭方便管理吧,所以第一个开。不过还是很羡慕继续上网课或取消军训的学校。

3.朝令夕改·终究是错付了

生活总是这样的大起大落,我失去了军训免训的资格。

免训名额从4人删减至了3人,我就是那个被del掉的人。名额给了新部长和摄影的同学和一个…不留部的同学。我确实很难理解此,她竟宁可给外人也不给我……从小学5年级就有军训,前前后后已经训了4次了,我怀疑我是易军训体质,很少有见到五年级和初三都需要军训的情况。嗐。就当老天想让我再来一次军训,那就来第5次吧。

]]>
12 https://bleshi.com/Sophomore.html#comments https://bleshi.com/feed/Sophomore.html
基于Python模拟鼠标的抢课实现 https://bleshi.com/Pyautogui.html https://bleshi.com/Pyautogui.html Thu, 04 Jun 2020 09:00:00 +0800 BleShi 0.背景

最近又要选课了,我们学校比较奇怪,并不是全看手速。

高绩点、高年级的同学有更高优先权,但课程如果被同学释放了仍然可以直接去抢

这样的政策进而催生了好同学更容易上到无脑 4.0 的水课,普通同学就更有可能踩雷课的滚雪球现状。

现实中买卖课程的情况也非常严重,高年级学长学姐将多余的学分都选了通识课,再出售或赠送给低年级的同学。

于是贫穷且无助的我催生了截胡他们交易的想法,即在卖家释放课程的时候,用脚本抢到释放的课程。

1.网课平台

我们用的并不是主流的方正系统,而是一个非常古老的ASP网站,网上我并没有找到现成的油猴脚本等抢课方案。

然后这套祖传代码也很难搞,大概是我太菜了叭

它的 Cookie 返回一下就失效了,也没提交接口,直接后端传值。

2.模拟鼠标

反正我也搞不清楚大佬说的 解析DOM 的方法,就想直接用 Selenium 或者 Pyautogui 实现吧。

反正系统也没有验证码,其他同学也是靠手速,于是选用了更方便的后者来实现。

代码如下:

import pyautogui #引用库
import time
import sys

i = 0  #计数器
try:
    while i < 10000 :
        pyautogui.click(3353,1916) #第一个点的位置
        time.sleep(0.001) #让鼠标休息一下下
        pyautogui.click(3069,950)
        time.sleep(0.001)
        pyautogui.click(2960,748)
        time.sleep(0.001)
        pyautogui.click(2184,409)
        time.sleep(0.001)
        pyautogui.click(3162,685)
        time.sleep(0.001)
        i=i+1
except KeyboardInterrupt:
    sys.exit(0)

3.效果

还真的很管用,大家都是大晚上开始交易的,我睡觉前挂在了那边,第二天起来就有课程上钩啦!

4.卖课的坏想法

一节课好课通常可以卖到三位数的价格,真的是太诱惑了!

我可以卖给别人,再自己来截胡,这样成本无限,需求还能不断被满足。

不过我胆子小,还是想安安稳稳的毕业。

虽然这个只是类似自动重拨电话机的原理,但是被人举报了大概还是会凉凉叭。

]]>
6 https://bleshi.com/Pyautogui.html#comments https://bleshi.com/feed/Pyautogui.html
Python Learning https://bleshi.com/PythonLearning.html https://bleshi.com/PythonLearning.html Thu, 05 Mar 2020 18:00:00 +0800 BleShi 0.序言

本来因为没考上 计算机专业 ,所以就想打算做成生活博客的,把以前自己乱折腾的东西就全删了。

不过恰好今年我们通识课也有开设关于 Python 学习的课程,所以还是来写写。

因为是初学者,且非科班专业,如有不正之处还请大佬们包含。

本文较长,建议点击右侧按钮以打开 目录树 ,选择您需要的内容进行浏览!

可配合我在 Github 上开的坑一起食用 ;

1.环境安装与基础知识

这边就直接选择我们学校老师推荐的 Python 3.7.4 + Jupyter Notebook 了, 大佬们给我安利的各类 IDE 这边就不多折腾了,怕在学校里显得我很另类

Python 安装

我们先下载 Python 3.7.4 64位

勾选 Add Python 3.7 to PATH ,并点击 Customize installation

Pic1

无脑点击 Next

Pic2

勾选 Install for all users ,并自定义设置 安装路径

Pic3

顺利完成安装 ;

Pic4

扩展包 安装

打开 命令提示符 ,运用 pip install [包名] 即可完成安装,如安装 IPython包

pip install IPython

Pic5

如提示 需升级 则按说明输入如下代码即可 ;

python -m pip install --upgrade pip

Pic6

我们老师也给了个 批量安装扩展包脚本 ,双击安装即可 ;

Pic7

Jupyter Notebook 工作路径配置与启动

使用了老师给的脚本后,已经顺利完成了 Jupyter Notebook 的安装,然后我们需要修改 默认工作路径

运行命令:

jupyter-notebook --generate-config -y

Pic8

如图所示,我的配置文件在 C:\Users\BleShi\.jupyter\ 路径 ;

此时我们双击打开 jupyter_notebook_config.py 文件 ;

Ctrl + F 搜索代码: #c.NotebookApp.notebook_dir = ''

Pic9

' ' 内,填入你需要设置的默认工作路径,并记得删除前面的 # 号

如我设置后为:

c.NotebookApp.notebook_dir = 'C:/Workspace-jupyter'

Pic10

此时,所有的安装已经完毕了,可以在 命令提示符 内输入 jupyter notebook 以默认浏览器启动 Jupyter Notebook ,使用它的时候请 不要关闭 这个 命令提示符 窗口 ;

Pic11

关键字/保留字

以下内容均为 关键字/保留字他们仍然是区分大小写的

'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'

变量命名规则

  1. 可以由字母、数字、下画线 _ 组成,但开头不能有数字
  2. 不能是 Python 的 关键字 ,但可以包含关键字,如: not_and 等 ;
  3. 不能包含空格 ;

内置函数

Pic12

作业 1 温度换算

Python 中调试和运行以下程序,并执行,将程序代码上传。

Pic13

我的答案:

# -*- coding: utf-8 -*-

temp_str = input("请输入带符号的温度值,如'23c','34f'")
if temp_str[-1] in ['F','f']:
    temp_Cels = (eval(temp_str[0:-1]) -32) / 1.8
    print("转换后的温度是 %.2f摄氏度" % temp_Cels)
elif temp_str[-1] in ['C','c']:
    temp_Farhr = 1.8 * eval(temp_str[0:-1]) + 32
    print("转换后的温度是{:.2f}华氏度".format(temp_Farhr))
else:
    print("格式错误")

Pic4

Pic15

请注意所有符号为英语输入状态下输入!

作业 2 金灿灿画图

Python 中调试和运行以下程序,并执行,将程序代码上传。

Pic16

我的答案:

# -*- coding: utf-8 -*-
    
import turtle as t
import time
t.color("red","yellow")
t.speed(10)
t.begin_fill()
for i in range(50):
    t.forward(200)
    t.left(170)
t.end_fill()
time.sleep(1)

Pic17

作业 3 绘制小猪佩奇

Python 中调试和运行以下代码,将结果上传。

小猪佩奇绘制代码示例文件名

我的答案:

Pic18

2.Python 语言基础

唔!终于开始学辣!感觉区分基础概念很困难,但是执行代码倒还挺简单哒!

数据类型 概念

Python 3 中有 6 种标准的数据类型: Number(数字) 、 String(字符串) 、 List(列表) 、 Tuple(元组) 、 Set(集合) 、 Dictionary(字典) ;

Python 3 支持 3 种不同的数值类型: 整形(int) 、 浮点型(float) 、 复数(complex) ;

整数 没有上下限,也不会产生误差 ;

数据有类型是因为它们分配的内存大小不同 ;

数据有类型是因为它们的运算种类不同 ;

变量没有类型是因为 Python 不根据变量分配内存 ;

数据类型 整型 int

int 通常被称为整形或整数,有 之分,但不带小数点 ;

如:

>>> 50
50

>>> 25+25
50

>>> 50-25
25

>>> 50*2
100

>>> 50//2.0
25.0
# 地板除,只取整数部分

>>> 57%7.0
2.0
# 余数运算,直接得到余数

数据类型 浮点型 float

浮点型由整数部分与小数部分组成,也可以用科学计数法表示 ;

如:

>>> 3.3*51
168.29999999999998
# 因整数和浮点数在计算机内部存储的方式不同,整数运算是精确的,但浮点可能会四舍五入误差

>>> 50//2.0
25.0
# 地板除,只取整数部分,此时结果为浮点数

>>> 57%7.0
2.0
# 余数运算,直接得到余数,此时结果为浮点数

数据类型 数据类型转换

可以利用 int 函数 和 float 函数进行转换 ;

>>> int(5.20)
5
# 将括号内的值转换为整数

>>> float(1314)
1314.0
# 将括号内的值转换为浮点数

>>> float(int(520.1314))
520.0
# 也可以嵌套起来食用呐!

变量和关键字 常量

变量指向各种类型值的名字,以后再用到的时候,直接引用名字就可以啦!

我们甚至可以把字符串赋值给变量,具体类型并不是固定哒!

我们利用 = 进行赋值,如:

>>> a=200
>>> print(a)
200
>>> a=a+200
>>> print(a)
400
# 赋值语句是先计算右侧的表达式的
>>> a="www.bleshi.com"
>>> print(a)
www.bleshi.com

变量和关键字 变量名称

变量可以随便命名,只要你喜欢就可以,包括但不局限于你用中文日文 火星文 (这个不行哈哈哈哈,不能乱用符号)等。

如:

>>> 藍小檸為什麼還沒有女朋友 ="我还是好喜欢她"
print(藍小檸為什麼還沒有女朋友)
藍小檸為什麼還沒有女朋友

但你还是需要注意如下规则哦:

  1. 可以由字母、数字、下画线 _ 组成,但开头不能有数字
  2. 不能是 Python 的 关键字 ,但可以包含关键字,如: not_and 等 ;
  3. 不能包含空格 ;

另,请注意 Python变量 是区分大小写的。

语句和表达式 语句

语句是 Python 解释器可以运行的一个代码单元,可以理解为可执行的命令啦。

如:

>>> 藍小檸想找什麼類型的女孩子呢 ="憋说了,换个话题吧"
print(藍小檸為什麼還沒有女朋友)
憋说了,换个话题吧

语句和表达式 表达式

表达式就是值、变量和操作符的组合,一个值也可以看作表达式的哦。

如:

>>> 3*3
9

操作符和操作对象

unm 像 +-*///% 这种都可以算运算符,操作对象就是把运算符连接起来的东西。

具体用专业术语说,有如下 8 种运算符:

  1. 算数运算符 ;
  2. 比较(关系)运算符 ;
  3. 赋值运算符 ;
  4. 逻辑运算符 ;
  5. 位运算符 ;
  6. 成员运算符 ;
  7. 身份运算符 ;
  8. 运算符优先级 ;

算数运算符

 除去数据类型板块内已经介绍过的运算符,这边再介绍下之前没提到的次方运算:

如:

>>> 2**8
256
# 即 2 的 8 次方运算

比较运算符

比较运算符主要用于比较 废话 ,通常是会返回 TrueFalse ,具体如下:

== # 等于,就是用来比较是否相等
!= # 不等于,就是用来比较是否不等
>  # 大于,比较左边是不是大于右边
<  # 小于,比较左边是不是小于右边
>= # 大于等于,比较左边是不是大于等于右边
<= # 小于等于,比较左边是不是小于等于右边

如:

>>> a=1
>>> b=2
>>> a!=b
True 
# 显然 a 不等于 b 啦,所以就返回 True 咯

赋值运算符

我将它朴素的理解为 先运算再赋值,形如 c+=a 等价于 c=c+a

=   # 等于赋值运算符
+=  # 加法赋值运算符
-=  # 减法赋值运算符
*=  # 乘法赋值运算符
/=  # 除法赋值运算符
%=  # 取余赋值运算符
**= # 幂赋值运算符
//= # 取整赋值运算符

运算符优先级

一个表达式内出现多个操作符后,会按照如下的运算优先级依次进行操作:

()                     # 括号
**                     # 指数运算
* / % //               # 乘、除、取余、取整
+ -                    # 加法、减法
<= < = > >=            # 比较运算符
!= ==                  # 等于运算符
+= -= *= /= %= **= //= # 赋值运算符

注释

注释必须以 # 开始,可以单独占据一行,也可以放在句末。

3.列表和元组

数据结构是通过某种方式(如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或字符。在 Python 中,最基本的数据结构是序列 SequencePython 包含 6 种内建序列,即 列表元组字符串Unicode字符串Buffer对象Xrange对象

通用序列操作 索引

序列中每个元素都分配一个数字,代表他在序列中的位置索引,第一个索引是 0 ,第二个索引是 1 ,可以通过编号分别对序列的元素进行访问:

>>> website="www.bleshi.com" # 定义变量 website 为 www.bleshi.com
>>> print(website[0])        # 根据编号取元素
w                            # 输出编号为 0 的元素
>>> print(website[3])        # 根据编号取元素
.

可以配合本图理解食用。

Pic19

我们将上方的内容称之为 正数索引 ,而从右向左的索引可以称之为 负数索引

>>> website="www.bleshi.com" # 定义变量 website 为 www.bleshi.com
>>> print(website[-1])        # 根据编号取元素
m                            # 输出编号为 0 的元素
>>> print(website[-4])        # 根据编号取元素
.

所以我们的图片得到了升级:

Pic20

另,不定义变量直接索引也可以:

>>> print("Happy"[0])
H
>>> print("Happy"[-1])
y

>>> CleverBoy=input()[0] # 操作函数的返回序列
BleShi
>>> print(CleverBoy)
B

因此,索引可以用于 变量引用操作直接操作操作函数的返回序列

通用序列操作 分片

分片通过 : 可以实现一定范围内元素的访问,若边界为 ab ,则得出的结果是 a<=x<b ,可理解为 [a,b)

>>> sequence=[1,2,3,4,5,6,7,8,9,10]
>>> print(sequence[0:4])   # 取索引中的第零到第三位置的元素
[1, 2, 3, 4]
>>> print(sequence[-3:-1]) # 取索引中从右向左的第三位和第二位
[8, 9]
>>> print(sequence[:0])    # 不知道这个是啥意思,反正啥也出不来qwq,盲猜从第零位置到第零位置
[]
>>> print(sequence[-3:])   # 取最后三个元素
[8, 9, 10]
>>> print(sequence[0:])    # 取全部元素
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> print(sequence[:])     # 取全部元素
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> print(sequence[:3])    # 取前三个元素
[1, 2, 3]

如果要取用不连续的元素,我们就要使用到 步长 ,默认 步长 均为 1 ,要用则多加一个 :

>>> sequence=[1,2,3,4,5,6,7,8,9,10]
>>> print(sequence[0:10:2])   # 取所有的奇数
[1, 3, 5, 7, 9]
>>> print(sequence[2:10:3])   # 取3的整数倍
[3, 6, 9]
>>> print(sequence[9:0:-2])   # 步长也可以是负的(有一说一,很高级
[10, 8, 6, 4, 2]

通用序列操作 序列相加

可以用 + 来进行序列的连接操作:

>>> a=[1,2,3]
>>> w=[4,5,6]
>>> print(a+w)
[1, 2, 3, 4, 5, 6]

>>> s="Ble"
>>> l="Shi"
>>> print(s+l)
BleShi

但是只有 类型相同 的序列才能够进行序列连接操作。

通用序列操作 序列乘法

在字符后面用 * 以使其反复出现:

>>> print("iloveu"*5)
iloveuiloveuiloveuiloveuiloveu
>>> print([52013]*14)
[52013, 52013, 52013, 52013, 52013, 52013, 52013, 52013, 52013, 52013, 52013, 52013, 52013, 52013]

通用序列操作 长度 最小(大)值

可以用 lenmaxmin 函数来实现这些功能。

>>> sequence=[1,100,500,10000]
>>> print(len(sequence)) # 输出长度
4
>>> print(max(sequence)) # 输出最大的数值
10000
>>> print(min(sequence)) # 输出最小的数值
1

列表 元素赋值

可以使用 赋值语句 来改变列表的方式:

>>> a=[1,2,3]
>>> a[1]=10 # 替换第一位的数字,也就是将数字 2 换为 10
>>> print(a)
[1, 10, 3]
>>> a[1]="BleShi" # 替换第一位的数字,也就是将数字 2 换为 10
>>> print(a)
[1, 'BleShi', 3]

列表 增加元素

利用 append 函数在列表末尾添加对象:

>>> maxim=[520]
>>> maxim.append(1314)
>>> print(maxim)
[520, 1314]
>>> maxim.append("Ohhhhh") # 也可以往里面加文字哦
>>> print(maxim)
[520, 1314, 'Ohhhhh']

列表 删除元素

利用 del 函数删除你的对象:

>>> girlfriend=["She","nobody"]
>>> del girlfriend[0] # 你的对象已被删除
>>> print(girlfriend)
['nobody']

列表 分片赋值

利用 list 函数,可以实现老罗的大爆炸功能

>>> boom=list("Smartisan,OS")
>>> print(boom)
['S', 'm', 'a', 'r', 't', 'i', 's', 'a', 'n', ',', 'O', 'S']
>>> boom[10:]=list("YES") # 第 10 位后换位 YES
>>> print(boom)
['S', 'm', 'a', 'r', 't', 'i', 's', 'a', 'n', ',', 'Y', 'E', 'S']

>>> task=list("蓝小柠有女朋友了吗")
>>> task[3:3]=list("在2020年")
>>> print(task)
['蓝', '小', '柠', '在', '2', '0', '2', '0', '年', '有', '女', '朋', '友', '了', '吗']

列表 嵌套列表

欢迎使用 mix 函数开始套娃:

>>> a=["BleShi"]
>>> b=[".com"]
>>> mix=[a,b]
>>> print(mix[0],mix[1])
['BleShi'] ['.com']

列表 列表方法

利用 count 函数,可以实现对象中有多少个个数的计算:

>>> ohhhhhh=("23333")
>>> print("在ohhhhhh中一共出现了",ohhhhhh.count("3"),"个3")
在ohhhhhh中一共出现了 4 个3

利用 extend 函数,可以在原序列后增加内容:

>>> a=["Ble","Shi"]
>>> b=["ohhhhh","23333"]
>>> a.extend(b)
>>> print(a)
['Ble', 'Shi', 'ohhhhh', '23333']

请注意 extend 函数有别于两个列表相加,它会使得原序列发生改变哦!

利用 pop 函数,可以移除某元素:

>>> a=[1,2,3,4,5,6,7,8,9,0]
>>> a.pop() # 不传参则删末位
0
>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.pop(2) # 传参2,则删第二位
3
>>> print(a)
[1, 2, 4, 5, 6, 7, 8, 9]

这里学习到的 pop 函数是除了 none 以外又能够修改列表又能够返回元素值的:

利用 insert 函数,可以插入某元素:

>>> num=[1,2,3,4,5]
>>> num.insert(2,"a") # 数字 2 后插入 a
>>> print(num)
[1, 2, 'a', 3, 4, 5]

元组

( ) 来创建 元组 ,用 , 分割

>>> (1,2,3)
(1, 2, 3)
>>> ("BleShi",".com")
('BleShi', '.com')
>>> (1,) # 记得要加逗号哦
(1,)

元组 tuple函数

利用 tuple 函数以一个序列作为参数,并转换为元组:

>>> tuple("hello")
('h', 'e', 'l', 'l', 'o')
>>> tuple(["Ble","Shi"])
('Ble', 'Shi')
>>> tuple(("Ble","Shi")) # 如是元组,则原样返回
('Ble', 'Shi')

元组 访问元组

访问元组的方式与访问列表一样:

>>> a=(1,2,3,4,5,6)
>>> print(a[1])
2
>>> print(a[0:3])
(1, 2, 3)

元组 连接元组

元组可以被连接,但不可以被修改:

>>> a=(1,2,3)
>>> b=(6,7,8,9)
>>> print(a+b)
(1, 2, 3, 6, 7, 8, 9)

元组 删除元组

不能删除元素,但可以整个元组删除。

>>> a=(1,2,3)
>>> del a

元组 元组索引、截取

和列表的方式一样:

>>> a=[1,2,3,4]
>>> print(a[2])
3
>>> print(a[-3])
2

据说,不可变的 tuple 会使得代码更安全,可以按照实际情况来选用。(我啥都写不来,你还和我说安全呜呜呜

4.程序设计的结构

开始写程序辣,冲鸭!

条件和条件语句 布尔值(逻辑值)

布尔值 只有两个值:True和False,分别表示真和假。

以下值被视为假,也就是 0

False、None、0、""、()、[]、{} 

其他的所有都视为真,也就是 1 ,包括各类数字、字母等。

>>> print(True==1)
True
>>> print(True-1)
0
>>> print(True+False+5)
6
>>> print(bool(5)) # 给定参数转换为布尔类型,无则返回 False
True

条件和条件语句 if 与 else

直接用 if 就可以了,但请注意代码的缩进:

num1=int(input("请输入一个整数:"))
num2=int(input("请再输入一个整数: "))
max=num1
if max<num2:
    max=num2
print("这两个整数最大的是:",max)
请输入一个整数:100
请再输入一个整数: 150
这两个整数最大的是: 150

直接用 eles 也可,但请注意代码的缩进:

year=int(input("请输入一个公元年份:"))
if(year % 4==0 and  year%100!=0) or (year%400==0):
    print("公元",year,"年是闰年")
else:
    print("公元",year,"年是平年")

请输入一个公元年份:2020
公元 2020 年是闰年

条件和条件语句 elif 多分支选择

使用 if...elif...else 的结构来实现:

score=int(input("请输入学生成绩:"))
grades=("优秀","良好","中","合格","不合格")
if score>=90:
    grade=grades[0]
elif score>=80:
    grade=grades[1]
elif score>=70:
    grade=grades[2]
elif score>=60:
    grade=grades[3]
else:
    grade=grades[4]
print("该生成绩为:",grade)

请输入学生成绩:75
该生成绩为: 中

条件和条件语句 选择结构嵌套

# 本程序用于求一元二次方程的根
import math
a=float(input("请输入一元二次方程的二次系数:"))
b=float(input("请输入方程的一次系数:"))
c=float(input("请输入方程的常数项:"))
if a==0:
    print("方程二次系数不能为0!")
else:
    delta=b*b-4*a*c
    x=-b/(2*a)
    if delta==0:
        print("方程有唯一解,即X=",x)
    elif delta>0:
        x1=x-math.sqrt(delta)/(2*a)
        x2=x-math.sqrt(delta)/(2*a)
        print("方程有个两个实根,分别是X1=",x1,",X2=",x2)
    else:
        x1=(-b+complex(0,1)*math.sqrt((-1)*delta))/(2*a)
        x2=(-b-complex(0,1)*math.sqrt((-1)*delta))/(2*a)
        print("方程有个两个虚根,分别是X1=",x1,",X2=",x2)

请输入一元二次方程的二次系数:2
请输入方程的一次系数:4
请输入方程的常数项:24
方程有个两个虚根,分别是X1= (-1+3.3166247903554j) ,X2= (-1-3.3166247903554j)

循环结构 while

利用 while 以实现循环:

sum=0
n=0
while n<=100:
    sum=sum+n
    n+=1
print("1+2+3+...+100=",sum)

1+2+3+...+100= 5050

它也可以同 else 一起使用:

count=int(input("请输入一个整数:"))
while count<10:
    print(count,"比10小")
    count+=1
else:
    print(count,"不比10小")

请输入一个整数:4
4 比10小
5 比10小
6 比10小
7 比10小
8 比10小
9 比10小
10 不比10小

循环结构 for

for 语句是循环结构中应用比较广泛的循环控制语句,特别适合循环次数确定的情况,可配合 range 一起食用:

格式为:for 目标变量 in 序列对象,range([start,]end[,step]):

for i in range(5):
    print(i)
0
1
2
3
4

for i in range(2,5):
    print(i)
2
3
4

for i in range(2,20,3): # 步长为 3
    print(i)

用for循环计算1+2+3+...+100的值:

sum=0
for i in range(101):
    sum=sum+i
print("1+2+3+...+100=",sum)

1+2+3+...+100= 5050

再举个栗子:

words=["蓝小柠 ","是个 ","可爱的 ","小盆友"]
for word in words:
    print(word,end="")

蓝小柠 是个 可爱的 小盆友

循环结构 跳出循环 break语句

利用 break 语句用在循环体内,迫使所在循环立即终止,马上跳出循环体,继续执行循环体后面的语句:

# 求两个整数的最大公约数
# 基本方法是先求两者较小的那个,然后循环变量从较小的变量向1倒退,当循环变量同时被两者整数时,最大公约数就找到了,立即退出循环。
m=int(input("请输入正整数:"))
n=int(input("请再输入一个正整数:"))
min=m
if m>n:
    min=n
for i in range(min,1,-1):
    if m%i==0 and n%i==0:
        print(m,"和",n,"的最大公约数是:",i)
        break

请输入正整数:105
请再输入一个正整数:70
105 和 70 的最大公约数是: 35

注意:break只能用于while和for语句构成的循环体中;在循环嵌套的情况下,break只能终止并跳出最近的一层循环体。

循环结构 continue语句

当在循环结构中遇到 continue 语句时,程序将跳过 continue 语句后面尚未执行的语句,重新开始下一轮循环,也就是说只结束本次循环的执行,并不终止整个循环的执行:

# 求1到100之间全部奇数之和。
x=y=0
while True:
    x+=1
    if not(x%2==0):
        continue
    elif x>100:
        break
    else:
        y+=x
print("y=",y)

y= 2550

循环结构 pass语句

pass 语句可以用来占个坑,但是啥用没有:

>>> for i in range(10):
        pass

列表推导 序列解包

序列解包是一种很好玩的 赋值 方法,例如:

>>> x,y,z=1,2,3
>>> print(x,y,z)
1 2 3

也可以用来交换变量的值:

>>> x,y,z=1,2,3
>>> x,y=y,x
>>> print(x,y,z)
2 1 3

可以使用*运算符收集多余的值,如:

>>> a,b,*rest=[1,2,3,4]
>>> print(a,",",b,",",rest)
1 , 2 , [3, 4]

>>> a,*middle,c=[1,2,3,4,5,6]
>>> print(a,",",middle,",",c)
1 , [2, 3, 4, 5] , 6

列表推导 增强赋值

将自身的赋值语句的运算符 移动到左侧 ,如:

>>> x=5
>>> x+=1 # 等价于 x=x+1
>>> print(x)
6

>>> x=5
>>> x*=4
>>> print(x)
20

>>> BleShi="蓝小柠"
>>> BleShi*=6
>>> print(BleShi)
蓝小柠蓝小柠蓝小柠蓝小柠蓝小柠蓝小柠

列表推导 简单推导

比如需要生成一个平方数列表:

square=[]
for i in range(10):
    square.append(i*i)
print(square)

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

但使用 列表推导 ,我们就可以这么写:

print([x*x for x in range(10)])

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

如只想显示那些能被3整除的平方值:

square=[] # 传统写法
for i in range(10):
    if i%3==0: # 注意:i能被3整除和i的平方能被3整除等价。  
        square.append(i*i)   
print(square)

[0, 9, 36, 81]

print([x*x for x in range(10) if x%3==0]) # 列表推导
    
[0, 9, 36, 81]

5.函数和面向对象

Pic21

面对对象编程,冲鸭!

函数的概念 函数的定义

计算机程序设计语言中的函数是一种具有独立性的子程序和可复用的代码块,这种结构是为了重复利用代码而设计的。

函数的定义使用 def 语句,后面跟上函数名,括号,括号里面是参数,注意最后还有冒号。

def fibs(num): # 将斐波那契数列写成如下的函数
    result=[0,1]
    for i in range(num-2):
        result.append(result[-2]+result[-1])
    return result

print(fibs(10)) # 直接这样输出结果就可
print(fibs(30))

fibs 函数的定义中,注意 result 表示斐波那契数列, return 语句用于指明函数的返回值,函数执行到 return 语句就结束了。

函数的参数 列表作为参数

函数作用域有限制,内部修改参数的值,外部变量的值不发生变化。

def change_para(name):
    name="小柠"
    print("函数内变量的值是:",name) # 会输出 函数内变量的值是:小柠
    return 
name="蓝小柠"
change_para(name)
print("函数外部变量的值是:",name) # 会输出 函数内变量的值是:蓝小柠

但以上限制域只对于 数值逻辑值字符串 这种不可变类型有效,对于可变的类型就不行惹

def change_para(names):
    names.append("袁绍")
    print("函数内列表的值:",names)
    return 
names=["曹操","孙权","刘备"]
change_para(names)
print("函数外列表的值:",names)

函数内列表的值: ['曹操', '孙权', '刘备', '袁绍']
函数外列表的值: ['曹操', '孙权', '刘备', '袁绍']

我们发现遇到了 列表 的时候,因都是对于同一个列表进行操作,所以发生冲突,我们可以用创造副本的方式来解决:

def change_para(names):
    names.append("袁绍")
    print("函数内列表的值:",names)
    return 
names=["曹操","孙权","刘备"]
change_para(names[:])            # 注意:这里用切片产生了列表的副本。
print("函数外列表的值:",names)

函数内列表的值: ['曹操', '孙权', '刘备', '袁绍']
函数外列表的值: ['曹操', '孙权', '刘备']

这样就可以惹,这里使用的创造副本用的是 浅复制 ,遇到嵌套的列表要使用 深复制

函数的参数 位置参数和关键字参数

我们自定义的函数也可以拥有多个参数:

def show_provinceinfo(provincename,population,area):
    print(provincename,"的人口是",population,"万,面积是",area,"万平方公里。")
    return
show_provinceinfo(area=48.6,population=8341,provincename="四川省") # 指定了参数的名字给他们赋值,避免顺序问题

四川省 的人口是 8341 万,面积是 48.6 万平方公里。

函数的参数 收集参数

如有多个同样类型的数据,我们可以用 * 的方式来实现元组解包:

def print_district(city,*district):
    print(city,"包括以下地区:",*district)   # 元组解包
print_district("上海市","青浦区","松江区","闵行区","浦东新区")
上海市 包括以下地区: 青浦 松江 闵行 浦东新区

* 的收集参数最好在最后的位置,否则必须用名称指定后面的参数,不然就会引起混淆。

我们还可以用两个*收集关键字参数,也就是字典,例如:

def print_params(**params):
    print(params)
print_params(x=1,y=2,z=3)

{'x': 1, 'y': 2, 'z': 3}

变量的作用域

局部变量和全局变量名字相同,但是他们互不干扰:

def foo():
    x=2333
    print("局部变量x的值:",x)
x=5887415157
foo()
print("全局变量x的值:",x)

局部变量x的值: 2333
全局变量x的值: 5887415157

如在函数内需要修改全局变量的值,则先用 global 关键字声明:

def foo():
    global x
    x+=50
    print("函数内x的值:",x)
x=100
foo()
print("函数外x的值:",x)

函数内x的值: 150
函数外x的值: 150

函数内需要使用全局变量,则可以使用 globals() 函数来访问:

def foo():
    x=50
    x+=globals()["x"]
    print("全局变量x和局部变量x的值:",x)
x=100
foo()

作用域与函数的递归

求1到100的和,就是100加上1到99的和;求1到99的和,就是99加上1到98的和;1到98的和,就是98加上1到97的和......这样一直下去,最后就到了1到2的和:

def resur_sum(num):
    if num==1:
        return 1
    else:
        return num+resur_sum(num-1) # 我调用我自己
print("1到100的和是:",resur_sum(100))

1到100的和是: 5050

不能无穷递归哦!

一切都是对象 数据是对象

可以用点 . 运算符访问属性和方法,例如:

a=4+3j              # 创建一个复数对象
print(a.real)       #显示这个复数的实部(对象的属性)
b=[1,2,3,4]         #创建一个列表对象
b.append(5)         #使用对象的方法添加元素
print(b)

一切都是对象 对象存储位置与类型

id()函数可以查看变量的位置,大致相当于内存地址编码:

x=5
print(id(x))
x=10
print(id(x))
for x in range(10):
    print(id(x))

一切都是对象 引用计数与垃圾回收

给一个对象分配一个名称,或者将其放到容器中(列表、元组或字典等),都会增加对象的引用计数:

a=37       #创建一个值为37的对象
b=a        #增加对象37的引用计数
c=[]
c.append(b)   #增加对象37的引用计数

引用计数就无法归零,对象不用以后也无法销毁,这就造成了内存浪费,或者叫做内存泄漏,内存中始终存在一段无用的代码。

一切都是对象 引用与复制

程序中,进行 a=b 这样的赋值时,就会创建一个对b的新引用。对于数值和字符串这样的不可变对象,增加的引用只是多了个名字。但对于 列表字典 这样的可变对象就不一样了:

a=[1,2,3,4]
b=a
print(b is a)
b[2]=100 # 同时修改了 a 和 b
print(b)
print(a)

True
[1, 2, 100, 4]
[1, 2, 100, 4]

所以,要创建对象的副本,而不是增加新的引用。

浅复制 的方法:

a=[1,2,[3,4]]
b=list(a)         # 创建a的浅复制
print("a和b是一个对象吗:",b is a)
b.append(100)     #浅复制的对象添加元素
print("浅复制的对象现在是:",b)
print("原来的对象现在是:",a)
b[2][0]=-100      #修改一个元素 
print("浅复制的对象现在是:",b)
print("原来的对象现在是:",a)

注意这里 ab 是独立的两个对象,但是他们的元素是共享的,对可变元素来说,修改之后将影响另外一个对象。

所以我们又有了 深复制 ,需要使用到库中的 copy 模块中的 copy.deepcopy() 函数进行:

import copy
a=[1,2,[3,4]]
b=copy.deepcopy(a)
b[2][0]=100
print(a,b)

类与对象 创建类

利用 class 类名(father-class): 的方式,最后定义类的内部实现:

class Cat:
    def describe(self):
        print("这是一只猫!")
cat=Cat()
cat.describe()           # 用对象名.成员的方法使用类的方法,不需要输入self参数。

6.字符串处理

]]>
6 https://bleshi.com/PythonLearning.html#comments https://bleshi.com/feed/PythonLearning.html
又是一年情人节 https://bleshi.com/ValentineDay.html https://bleshi.com/ValentineDay.html Fri, 14 Feb 2020 05:20:00 +0800 BleShi 0.序言

转眼间,又是一年情人节了。

依旧是,单身的一年。

最近的日子也是非常的特殊,随便写点记录下生活吧...

Pic1

1.我的青春终于完结啦————

Pic2

诚然,爱情公寓陪我走过了十年,从小学在电视机前,断断续续的收看,到如今,上大学后的我完完整整的追完了这部剧。

很多人在喷第五季已经没有了原来的味道,在收割情怀。

但我从没有这样认为过。

它给我带来了很多欢笑,它也变得更为的现实。

看剧的人,也长大了。

当花瓣飘落地平线的时候,我们终将离去。

感谢陪伴,你们也终于都修成了正果。

我们努力让自己变得更好,并不是为了扮演别人。

即使曾有错过有遗憾,但能记住彼此最美的笑,这已足矣。

2.社交

是这样的吧,还是会想起她。

但我知道我和她已经再无可能了,连朋友都做不成了。

也不会再去想着翻动她的朋友圈了。

因为:被拉黑了,也就什么都看不到了。

唔————

很多人都问我为什么不去找个女朋友。

我,累了......

没有能力处理好下一页,不如停下脚步吧。

上了大学后,我的社交反而没有增加。

平时一起玩的朋友,除了新认识的舍友们,就是那些早就认识的好友和网上认识的朋友了。

半年了,班级同学也没有认全,更别提学生会的朋友了。

也不是不能去交朋友吧,只是感觉并无意义。

不过,平时不管见到谁还是都表现的比较热情,天天 好哒 嗯呐 的发着消息。

记得计算机期末考前,有两三个女生都来约我图书馆一起复习。

害,说实话。

我之前连她们的脸和名字都对不上。

自然也没答应,没去白嫖奶茶什么的。

总感觉她们只是在把我当工具人用。

有些比较过分的我和她讲完 谢谢 都不说。

就像是我在给她打工一样。

Pic3

Pic4

害,算了。

可能我太把自己当回事了。

可能我太在乎其他人了。

想想也是,班里这么多人都是 NPC ,属于我自己的主线都没通,去触发什么新剧情。

3.寒假生活

假期伊始,我还信心满满打算寒假好好出去吃、玩,感受下正常大学生的生活

然而,老天并不给我这次机会(

不过还好在疫情爆发前出去吃过几顿饭,不算太对不起自己哈哈哈哈。

而且寒假附赠成为暑假的长度也不亏

之后整个寒假就基本上都是宅在家里了。

但是,我还是快破产了!!!

停学停课停生活费不停服务器啊qwq

当时就预算了一个月寒假的服务器的钱,没想到真没想到。

不过,这段时间也让我看见了身边的各种不同样的人叭。

每天走在消息的最前沿,在朋友圈反复横跳的人。

整体忧国忧民,立场坚定而没有理由,一味的宣泄。

/好了好了,跑题了,生活博客不谈这些 <(^-^)> √

]]>
11 https://bleshi.com/ValentineDay.html#comments https://bleshi.com/feed/ValentineDay.html
依法治节——法律er的春节打开方式 https://bleshi.com/LawyerLunarNewYear.html https://bleshi.com/LawyerLunarNewYear.html Fri, 24 Jan 2020 20:00:00 +0800 BleShi 转眼间已经到除夕啦————

大家打算怎么样过年鸭?

小柠听说情形是这样:

别人过年时:

Pic1

法学专业的同学过年时:

根据2013年12月国务院最新修订的《全国年节及纪念日放假办法》规定,我将享有初一至初三的三天法定假期,我将在此期间依法享有休息休假权

Pic2

作为野马浜皇家政法学院的学子

脑子里只有宪法、民法、刑法、……

专业课知识点一个一个往外蹦

想好好感受一下美好春节都难

Pic3

别人知禁烟花后:

Pic4

法学专业的同学知禁放烟花后:

根据《上海市烟花爆竹安全管理条例》禁止在外环线以内区域燃放烟花爆竹,但我们可以去野马浜看烟花鸭!

Pic5

这孩子就是这样没了女朋友的,因为——

“他居然不知道外环线以外的学校等场所依旧属于禁止燃放烟花爆竹。”

Pic6

Pic7

别人被劝酒后:

Pic8

但凡有一粒花生米,也不至于喝成这样。

法学专业的同学被劝酒后:

你明明知道我不能喝,还来强迫我,根据《民法通则》《侵权责任法》等法律规定,主观上存在强迫的过错,此时对于损害后果的发生,你应当承担相应的过错赔偿责任

Pic9

Pic10

别人被加“彩头”后:

我经常说一句话,

当年陈刀仔他能用20块赢到3700万,

我用10块赢到200块不是问题。

埋伏他一手,这个牌不能抢,

17张牌你能秒我? 你能秒杀我?

你今天能十七张牌把我秒了

我!当!场!就把这个桌子吃掉!!!

Pic11

法学专业的同学被加“彩头”后:

根据《上海市公安局治安管理处罚裁量标准(试行)》规定个人赌资在人民币100元以上的,属赌资较大,会被请去吃免费饭的

所以我们还是赌一杯奶茶吧!

Pic12

Pic13

别人领到长辈红包后:

妈,我都是奔三的人了,

这次总该给我自己保管压岁钱了!

PIC4

法学专业的同学领到长辈红包后:

虽然在《民法通则》第18条第1款规定“监护人应当履行监护职责,保护被监护人的人身、财产及其他合法权益,除为被监护人的利益外,不得处理被监护人的财产。”

BUT,我现在是成年人啦!

我现在可以依法享有被赠与的压岁钱的全部权力了

不再麻烦妈妈代为保护的压岁钱了呢!

Pic15


一篇融了很多梗的文章啦!

在这里小柠也祝各位新春快乐,身体健康啦!!!

]]>
3 https://bleshi.com/LawyerLunarNewYear.html#comments https://bleshi.com/feed/LawyerLunarNewYear.html
HAPPY 2020~ https://bleshi.com/HAPPY2020.html https://bleshi.com/HAPPY2020.html Tue, 31 Dec 2019 18:00:00 +0800 BleShi Pic1

Banner by @ Axton

一年中总有几天

要留给路上的精彩纷呈

丰富的经历会产生奇妙的变化

与不同的人和事交流,总有颇多感受

我,在这里

描摹着属于自己的2019

期许着更美好的未来。

关于自己

It's a hard year, but it's also my treasure.

一月:首次英语高考中顺利及格,我成为了极其少见的低分段放弃二考选手;

五月:参与上海市思想政治考试,喜提满分,非常感谢我的政治老师,真的让我实现了不用背书也能学会;

六月:高考,机缘巧合下比预估来的好;

六月:前往 NUIST 校园开放日,前往 SHPC 体检, 差亿点点成为程序员/网警 ;

七月:在 SJTU 参加了 THE Hack 2019 活动,并面基了网上的好朋友们 Troy , FH云彩Axton Yao以及认识了 9 年的 Miss. Qiu ;

八月:去欧洲玩,还认识了一个大学学姐,害,真巧;

八月:B站投稿了 一段本本测评视频 ,播放达 1.4万,寒假打算和 FH云彩 一起做下去;

九月:入学 SHUPL 并加入了很多个学生组织

九月:裸考通过了 NCRE 二级;

十月:解锁 女朋友剧情 ,有时候觉得自己和南模里的人也挺有缘的hhhhhh;

十一月:模仿微信小红旗换头像为校学生会搭建了校庆换头像页面;

十一月: Paris Pact Initiative Shanghai Cooperation Organiztion 志愿者

十二月:重构了博客;

十二月:思修微电影二等奖,和舍友一起做哒;

关于博客

诚然,是这项一年一度的传统艺能我下定决心在期末周把小博客恢复的(逃

来到了这个文科院校后,也就没啥折腾网站的想法惹,反倒是公众号做的多些,不过它确实给我加了很多分。

因为今年高考的原因,上半年没怎么更新文章,到暑假的时候就想把网站静态资源搬去另一台服务器,然后数据丢了,就咕咕咕咕咕咕咕咕咕咕咕咕咕到现在了。

我不管,我超厉害的,生产环境就是不备份的,就是直接删的

现在的情况大概就是删掉了原本的绝大多数的技术性的水文,仅保留了生活日志,主题从 Handsome 换到了 Mirages 。

关于玉米与小鸡

有了更充足的生活费,就更难以抑制自己剁手的性格了。

今年的玉米:

bleshi.com
blestudio.com
geimg.com
36ir.com
banyunzu.com
blecss.com
be233.com
lolico.net
233b.cn
126.ac.cn
lolicon.top
doforyou.top
9al.top
clouds.blue
qaq.party
cn2.party
luckily.party
moecat.party
playing.party
ubuntu.party
gulu.party

今年的小鸡:

1台东京软银,移动不多哔哔了,害;
1台首尔蘑菇,应该是蘑菇的杜甫开小鸡卖的吧,反正就挂静态页面,为数不多的三网能跑满;
1台新加坡M1,电信走CN2GIA很好,移动绕PCCW很难受;
2台伦敦Clouvider,丢包低,延迟高,到国内带宽谜之少;
2台法尔肯施泰因HZ,十几块的大盘鸡,套了CF做个图床,还挺好;
1台西伯利亚,吃灰;
1台香港HKT,电信凑活;
1台台北Hinet,租给别人了;

关于未来

希望自己考试门门都能顺利通过,工作上也顺顺利利的;

希望自己明年能够在 ECUST 辅修 CS ,或者能把 PHP 学完,能自己倒腾点东西出来 ;

当然,最最最最希望能找到我的小朋友,以后和我一起跨年呐;

最后也在此祝各位小伙伴们新年快乐,心想事成啦!

]]>
5 https://bleshi.com/HAPPY2020.html#comments https://bleshi.com/feed/HAPPY2020.html
Paris Pact Initiative Shanghai Cooperation Organiztion https://bleshi.com/ParisPactInitiativeShanghaiCooperationOrganiztion.html https://bleshi.com/ParisPactInitiativeShanghaiCooperationOrganiztion.html Mon, 25 Nov 2019 19:00:00 +0800 BleShi 进入大学后有幸能在 中国—上海合作组织国际司法交流合作培训基地 担任学生助理一职,在 11 月也有幸参与到了 Paris Pact Initiative Shanghai Cooperation Organiztion 会议协助中。

Pic1

1.会议

Pic2

协助与会专家登记。

不得不说,好多国家的英语名字我都不知道欸

Pic3

Pic4

Pic5

听大佬做演讲 ( × )

来喝茶 ( √ )

2.吃吃吃

会议期间的茶歇以及饭菜。

Pic6

Pic7

Pic8

Pic9

Pic10

Pic11

要是每天都能吃这么好就好了(嘻嘻

不过应该会导致迅速增肥哈哈哈哈。

3.住宿

Pic12

学校里的宾馆,这条件相比宿舍而言就非常非常好了,每天都可以愉快洗澡且晚上不断电断网!

还认识了一个俄罗斯叔叔,帮他上网,虽然并没有解决问题,但是他们也好容易混脸熟的hhhhh,第二天还拉我握手。

还陪一个俄罗斯小哥跑了两家医院,大晚上的从荒郊野岭跑去市区六院,只为拔一根鱼刺。

最嘲讽的莫过于,郊区也算比较大的医院吧,晚上连鱼刺都拔不出来,害。

4.结束

Pic13

3 天的会期都还挺顺利der,最后还能喜提两枚徽章。

算是一段非常愉快的经历啦,虽然都是些打杂的忙,但是感觉大家对我都超照顾哒

]]>
1 https://bleshi.com/ParisPactInitiativeShanghaiCooperationOrganiztion.html#comments https://bleshi.com/feed/ParisPactInitiativeShanghaiCooperationOrganiztion.html