2020-04
7

阴魂不散的小海龟

By xrspook @ 21:56:27 归类于: 扮IT

LOGO语言小海龟,你为啥阴魂不散啊啊啊啊啊啊啊啊啊啊!!!!!对从前小学3年级的我来说是个噩梦,现在依然是个噩梦!Think Python 2的第四章正是用这个turtle讲故事,想死的心都有了。没有一定英语基础,没有足够强悍的数学基础,怎么可能玩得转小海龟,而且还要空间思维能力。小时候我对这个东西瑟瑟发抖实在太正常了…… 25年后再遇到,我继续纠结得死去活来……

第四章最后的习题1要求画一个堆栈图,不知道他们到底要画些什么,要画到什么程度,mindmanager了一个,画完以后的确对函数的嵌套有点开窍。

习题2要画3朵花,画得我死去活来…… 但总算完全不看答案能画出来,看完答案,得到那些偷偷摸摸设定的参数后能画得跟要求一模一样。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import turtle, math
def arc(t, r, angle):
    n = 20 # int(2*math.pi*r/4)+3 公式画图太细致太慢,直接赋值加速
    step_length = int(2*math.pi*r)*angle/360/n
    step_angle = angle/n
    t.lt(step_angle/2) # 据说折腾一下角度能消除像素误差?
    polygon(t, step_length, n, step_angle)
    t.rt(step_angle/2)
def polygon(t, length, n, angle):
    for i in range(n):
        t.fd(length)
        t.lt(angle)
def flower(t, p, r, a): # t for turtle, p for petal, r for radius, a for angle
    for i in range(p):
        for i in range(2): # 重复两次画花瓣,两次转向后和初始方向一致,非常重要!!!!!
            arc(t, r, a)
            t.lt(180-a)
        t.lt(360/p)
def move(t, length): # 一个画板画3朵花必须用暗中位移
    t.pu()
    t.fd(length)
    t.pd()
bob = turtle.Turtle()
move(bob, -100)
flower(bob, 7, 60, 60) # 偷偷设定半径和角度,万恶的例子,叫人怎么猜!于是我也直接搬!
move(bob, 100)
flower(bob, 10, 40, 80)
move(bob, 100)
flower(bob, 20, 140, 20)
turtle.mainloop()
2017-11
29

完成搬迁

By xrspook @ 10:38:02 归类于: 烂日记

昨天完成了计划中的新宿舍搬迁。

主要的转移工作放在白天进行,绝大多数的工作都是在中午完成的。晚上只是做一些收尾的工作。比如说把衣柜里的配置乾坤大挪移。之前我想了很多办法让一个挂钩可以垂直挂很多衣架,但后来发现这样挑选衣服还是会很麻烦,而且取衣服的时候也不方便。最终我把旧宿舍的挂屉重新放到新宿舍的衣柜挂衣杆那里。那个东西你挂上去就占了2/3的位置,所以余下的地方就只能挂一两件衣服而已。那个东西的好处是一下子我多了五个抽屉,可以分类存放东西。内裤一格,袜子一格,文胸一格,余下的地方我用来放跑步用品。一个用来放跑步穿的裤子,另外两个用来放夏天穿的T恤。T之所以可以塞进去,是因为我全部都把它们折成一卷一卷的,挑的时候很好挑。放的时候也不占位置,唯一的缺点是我要每次要折衣服。折衣服这个操作我之所以一直都没有做是因为没有空间把衣服摊平,还有更重要的原因是因为我懒。之前宿舍床上的蚊帐一直都挂着,所以我不可能在床上折衣服。现在的宿舍我有一张桌面是空的书桌,往后大概我会在那里折。T卷起来,厚实的衣服也都折好放到收纳箱里。只有这样才能把空间尽可能地调用起来。当然我也可以把厚实的衣服折了,直接放柜子里而不放收纳箱,但是我实在怀疑那个柜子的密封性。这样的操作必须要要求我知道自己最需要的是什么,不怎么需要的是什么,长期不用的是什么。长期不用的衣物直接塞到柜子最高的收纳箱里,可能会穿的衣物放在中层的收纳箱里。经常穿的折好放在挂屉里,要不就直接放在衣柜中部收纳箱以外的空余位置。如果那个衣柜是由很多个抽屉组成我的摆放根本就没有烦恼,但是足够长挂衣服的地方就只有一个,而且很窄,具体来说是宽度38cm。余下的另一边是几个很高很深的格子。那种高度和深度足够塞被子,但问题是,如果放衣服,如果真的堆那么高的话,挑其中一件,拉扯出来肯定会造成衣崩。这也是为什么我一定要在柜子里横七竖八地放很多个收纳箱。

我觉得收纳工作就像在玩立体的俄罗斯方块,你不只要考虑高度和宽度,你还的考虑深度。买东西的时候就要计算好到底要什么尺寸,但也会有躺着中枪的时候。比如我买大号收纳箱的时候卖家标注的尺寸是大号38*25*25cm,我的衣柜一格宽度就是38cm,但我无论如何都不能把那东西塞进去,这也不能怪卖家,因为所有买东西的地方都会加上一句“手工测量,有1-2cm的误差”。完全一致的尺寸,但就因为那个误差导致我的收纳箱没办法水平塞进去,这样一来就打乱了我的计划。因为衣柜我当时量的尺寸是38*48*58cm,如果我能水平地把收纳箱塞进去,我能够并排放下2个。之所以造成计算失误的一个原因是我忽略了门校,那个东西凸起,一定程度阻碍了我放箱子,所以箱子的宽度顶多大概只能35cm。物是死的,人是活的,我们总能想到办法解决那些麻烦事。通过横竖排列组合我也的确做到了。空间思维能力很重要啊啊啊!!!

昨晚睡得还不错,起码不用烦恼音乐或打鼾的声音了。

2017-08
21

四装大菠萝锁

By xrspook @ 15:45:40 归类于: 烂日记

上周五一回到家我就迫不及待地开玩孔明锁。一开始我就已经默认我肯定没有那么高的智商可以一个晚上就搞定10个,用了2.5小时搞定7个我已经觉得很不可思议的,之所以可以这样还因为其中两个锁的原理一致。昨晚我终于找出时间把余下的3个都折腾一遍。余下的3个是看上去最复杂麻烦,分别是二十四锁、十八根锁以及大菠萝锁。从块头上看,这几个的体积都不小,从零件数量上看这些都远远比其它的多。昨晚最终我又大概用了2.5个小时才最终干掉了这3个锁。实际上玩过以后我觉得九根锁才是最难的,因为每一零件几乎都不一样。

因为有了第一晚的经验,所以在如何解锁方面我有了一点点心得。最经典的方式是直接推出去就卸掉一根,比如说十八根锁。要先往后推,让其它地方有空洞,间接解开别的零件是第二个可能,比如说二十四锁。我觉得最有迷惑性的是要把零件旋转90度,比如说大菠萝锁。恰好昨晚的三个锁是三种不同的解构方式,太巧合了,之所以能把它们不看说明书拆开是因为我在破拆第一晚那7个的时候已经小有心得。跟大菠萝比起来,二十四锁和十八根锁都比较简单。十八根锁的起手式要考验平衡能力,就像井字锁那样,但余下来的步骤都很自然。二十四锁的程序思路更明显,几乎等于是同一个技法重复8次,但其中的两次不完全一致,要有一些巧妙的顺序。如果要给小孩子做演示我觉得用二十四锁很合适。这是一个非常好让他们学习什么叫做以退为进的机会。

至于大菠萝锁,拆开的时候除了第一块,余下的我没怎么搞明白到底是怎么个组合法,只是把它们都打散。看过10个孔明锁的说明书,其中有一些的起手式是我不能一开始就把握好的,尤其是那些一开始就需要固定三维方向的主干的,因为我知道只要那个根基不对后面就不可能成功。昨晚的大菠萝锁我正是在起手式固定三轴的时候就纠结了很久。搞到一半实在搞不下去了,因为发现三轴错了,必须回到原点从零开始。第一次的时候我一直没有意识到某个操作到底是怎么回事,第二次的时候我发现原来这是因为我用错了一根零件。第二次我终于有点感觉地把半个大菠萝锁拼凑出来,虽然已经走到了那一步,但我还是要全部拆掉从第三步开始。因为如果完全按照说明书的描述是无论如何不能在完成半个大菠萝以后把余下的大菠萝也搞完,因为某些部分是对称,虽然对称的地方一个是活锁一个是死锁,但在某个步骤这两个部分都必须安装到位。第三次我终于把大菠萝整出来了!这套孔明锁分别用白红蓝绿橙黄6个颜色。大菠萝锁就像个马赛克魔方一样,我不满意其中某些颜色很奇怪,于是又把大菠萝的部分拆了。其它锁我组装一次成型就可以了,大菠萝我组装了4次!第一次搞不懂没想通之前我有过放弃的念头,直接把一堆零件都装回到袋子里送人就算了,我承认我智商没那么高还不行吗!居然玩具都会玩到人绝望的,但我还是挺下去了,继续盯看说明书,继续研究自己到底哪里没理解透。在不认识字还在读幼儿园的时候我都能自己看懂折纸书自娱自乐,大人们搞不定的我也能看懂,现在我为什么居然会栽在立体玩具上面呢?!组装大菠萝让我明白到说明书是好东西,但如果尽信你就输了;说明书能给你指路,但那不是唯一的解决办法。

山重水复疑无路,柳暗花明又一村。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress