2020-10
16

PQ上的纠结

By xrspook @ 23:59:46 归类于: 烂日记

晚上洗澡的时候我一直在想着某个Power Query的问题。某个功能我曾经试过用别的步骤去实现,但是到了最后一步的时候,发现某个东西算不出来,所以我就放弃了那个方法,文件也被我删掉了。晚上,当我遇到一个新问题的时候,我觉得用下午的那种方法才最容易实现。晚上洗澡的时候,我突然意识到,实际上下午的时候我几乎成功了,只剩下最后一步。当时我没想到,其实可以用一个以退为进。我可以做一个判断,如果if的判断等于空,就计算,如果不等于空,就是继续保留某数据。我并不知道如何修改PQ里某一列的数据,于是我的实现方法是新增一列对旧的那一列判断,然后把旧的那个删掉,新的那个重命名。这样就解决了下午我最后我没解决的问题。虽然这样做有点笨。高手一定不会这样做的,高手一定会有一些暂时我还无法参透的各种套叠解决问题。

要实现某个功能,最终我用了31行,更之前我用某个其它方法做出来的那个一样多,但后来的方法显然更容易理解。因为整个代码都是我手写出来的,命名也更加人性化。当然其实我也可以对系统自动生成的名字做修改,达到类似的颜值,但是某些自定义函数光靠系统的可视化窗口无法做到。经过这一番折腾以后,我更进一步地明白到之前我已经模仿做到的模糊查询到底做了什么操作。和之前我模仿回来的模糊查询比起来,这一次我实现的功能要麻烦一点。一开始的操作二者挺相似,模糊查询做完第1步以后,基本上就只剩下删除列和排序了,而我做的那个在完成的那一步以后,只不过是刚入门。我也不知道这一次摸索我到底是怎么折腾出来的,那显然,如果没有看见星光的M语言课程,我会继续迷糊。也正是因为第4节里说到了上下文,说到了新增列判断条件以及上下文的使用,才可以让我顺利流畅地通过第1步,也正是因为经过这一次练习,我觉得我已经略微掌握了上下文那个东西。

软件这种东西,光是看教程、听课,而不于实际操作,是没有用的,因为那个东西不会入脑。要形成条件反射,要让那些技能成为自己的东西,只有通过思考和练习。高手和低手的区别,我觉得大概在于高手的思考时间远远不需要那么长,所以他们可以有更多时间练习,而我这种低手,要在思考那里花好些时间,后来的练习当然比不上人家。基础的了练习尚且不够,就更不用说读懂练习中的异同。这种东西,在我高中的时候特别明显。高手在刷题的时候,我还在理解,至于为什么高手可以理解得那么快,至今,我都想不明白。大概这个东西不是想就能明白的。

经历过纠结以后,我觉得自己的脑洞又大了不少,在遇到问题的时候,我奇怪的思路又增加了一些。就是这些旁门左道的扩展,让我在处理正统问题上,貌似又更进了一步。

2020-07
8

过去的纠结开花了

By xrspook @ 9:38:16 归类于: 烂日记

当我以死磕式全包围的方法学习Think Python和做里面的习题的时候,网友觉得我完全不需要这样,那样太学生了,只需用到什么就学什么就可以了,但实际上,我觉得我这样做挺好。虽然我学的时候并不知道我除了这样还能怎样。看完书,但不会做里面的习题,我这书算算看好了吗?我要上手python,得到达条件反射的程度,不经过练习根本不行。我完全明白知道了理解了某些东西,但没有经过实践会是一个什么状态。

初中前两年我的英语老师从前是大学老师,后来不知怎的沦落到在一所臭名昭著的中学里教英语。他从来不给我我们布置作业,也不会有什么小测之类的东西,所以一年下来除了期中考试和期末考试,我们见不到习题。的确,开学的时候除了教材以外还会发1本练习题,很薄的一本,但做不做,做到什么程度,老师是放任自流的。他讲课完全么有问题,语法解释得很到位,字也写得非常漂亮,但他这种教法除非遇到非常自觉刷题的学生,遇到我们这种完全不自觉的,简直是必死无疑。我觉得小学毕业的时候,我的英语是很不错的,尤其是英语听力,因为某年寒假我还被选去某个地方上某个班强化过,但初中的前两年我算是被荒废了。要用得溜,无论你心法掌握得多好,依然需要大量的练习。中考的几门科目里,我的英语是最低分的。当我上了一所重点高中以后,我更加领会到我跟其他同学的差距,因为我所经历过的习题实在比他们少太多了!为什么当年我会刷物理的参考书,刷化学的参考书,却从来不刷英语的参考书和习题呢???英语这个东西和理科有一定的差别,理科你掌握了原理以后或许还能八九不离十,即便某些题目里有些综合,见过和没见过顶多是反应快慢的差别,但思路还是摆在那里的。英语这个东西有什么规定搭配,什么默认的例外,什么俚语,没遇到根本没法玩,我的跟头就是栽在了这里。如果可以重来,英语这个鬼东西我一定会刷很多题,而且还必须建立错题本。海量的阅读量和海量的单词量外加各种写作技巧拼凑起来,英语考试是可以拿高分的。不过话说回来,英语考试高不高分我完全无所谓,大概从高中开始,我就觉得英语是一种工具,实用至上。跟外国人交流的时候你根本不需要用非常正确的英语他们都能理解,所以其实六十分跟九十分没啥区别,都能解决问题。

学习python我之所以要做习题是因为Think Python那本书里面的实例其实非常少,知识点也不是真的全部都涵盖了。融会贯通这种东西完全靠做习题去达成。近段时间,我在写博客导出数据的转换脚本。的确,一些功能性的东西,我还是得去搜索,边学边用,但那些最基础的思路,是在我做习题的时候印到我脑子里的。比如我要筛选标签,正常人的第一个反应肯定是找筛选的函数,如果标签关键词只有一个,用find就好,但如果多个,那就得用正则了。我一开始也是怎么干的,但后来我发现这样会带入一些莫名其妙的路人甲,我需要准确匹配关键词,所以先建立列表,然后用if str in list就能完美解决的问题。如果标签数量多,还可以用字典替换列表,in在字典里的索引速度杠杠的。如果我不曾在字符串、列表和字典那里下过功夫,我怎么可能会有这种思路。习题的确折磨了我好段时间,但那都是值得的。

过去的纠结,让我现在顺畅。

2020-04
8

螺旋线

By xrspook @ 20:29:37 归类于: 扮IT

人家要我去学阿基米德螺旋线,但显然我是数学渣,根本领会到不到那些精神,转换不过来,就不要装着能转换。既然习题5说“或者其他种类的螺线”于是我就选择了在我理解范围内的斐波那契螺旋线,也就是黄金螺旋线。人家要我画螺旋线,我觉得要把方框也画出来才容易验证我自己有没有搞错。

为了完成方形和圆弧的两个循环,我笨蛋地把斐波那契数列算了两次……

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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 start(t): # 起点要先偏移一些,每次方向保持一致
    t.pu()
    t.home()
    t.goto(160,-110)
def square(t, size): # 第一个正方形
    for i in range(4):
        t.lt(90)
        t.fd(size)                
    t.rt(90)
def boxes(t, n, size): # n-1个正方形
    a = b = 1
    base = size
    for i in range(n-1):
        for i in range(6):
            t.lt(90)
            t.fd(size)
        t.rt(90)
        fibo = a+b # 计算斐波那契数列
        a = b
        b = fibo
        size = base*fibo
def spiral(t, n, size): # 第一个正方形里没有弧线,所以弧线也是n-1
    a = b = 1
    base = size
    for i in range(n-1):
        arc(t, size, 90)        
        fibo = a+b # 在算一次斐波那契数列
        a = b
        b = fibo
        size = base*fibo
bob = turtle.Turtle()
bob.pensize(2) # 笔迹粗点好看些
n = 8
size = 20
start(bob)
square(bob, size)
boxes(bob, n, size)
start(bob)
spiral(bob, n, size)
turtle.mainloop()
2020-04
8

冷静不慌了

By xrspook @ 13:49:05 归类于: 扮IT

昨晚的习题2的花朵让我很郁闷,今天习题3的PIE我沉着冷静了,所以快速完成任务。

参考答案用的不是一个画法,我先画中间的梗,再画外面的框,参考答案是一个接一个三角形画。无论哪个,都逃不掉三角形边长的正弦计算,你叫小学生怎么画!!!两种画法如果设定的内径一样,画出的线条长度是一样的。

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
import turtle, math
def pie(t, r, n): # t for turtle, r for radius, n for sides
    angle = 360/n
    for i in range(n):
        bob.fd(r)
        bob.bk(r)
        bob.lt(angle)
    bob.fd(r)
    bob.lt(180-(180-angle)/2)
    for i in range(n):    
        bob.fd(2*math.sin(math.radians(angle/2))*r)
        bob.lt(angle)
    bob.rt(180-(180-angle)/2)
def move(t, length): # t for turle
    t.pu()
    t.fd(length)
    t.pd()
bob = turtle.Turtle()
move(bob, -230)
pie(bob, 100, 5)
move(bob, 120)
pie(bob, 100, 6)
move(bob, 120)
pie(bob, 100, 7)
turtle.mainloop()
2020-03
24

回忆那只让我恐惧的小海龟

By xrspook @ 9:25:43 归类于: 烂日记

我不是读计算机的,但因为我是一个工科学生,所以我的大学课程里面有程序设计,但是学的是最基础的C语言。我不知道C语言跟其它比起来到底怎样,虽然很基础,但是该有的东西也都有了。还记得小学时学的那个小海龟LOGO语言。那才是真的一个让我崩溃的东西,每次上电脑课我都会有心惊胆战的感觉,大概因为当时我们是小学三年级,英语之停留在口语的阶段。如果只是拼打字,我还可以凭借那张纯粹打印出来的键盘练习。因为大家家里都没有电脑,所以所有人也就那个样了。至今我不觉得自己的打字有多快,尤其是如果你要我打英文。中文之所以快,是因为输入法有一些模糊音的处理,估计如果我是一个外国人,英语的输入法也有模糊音处理。英语输入法的模糊音或许只是我不知道。

小学的时光现在回想起来,就像奇迹一样。没有键盘的我们是怎么练打字呢?那些需要按Shift键才出得来的大写字母到底是怎么练的?我已经不记得一开始我们练习打字用的是哪个软件,但我记得我用过TT。现在我的电脑里仍然有TT这个奇迹般的软件。小学电脑室里学生的的电脑没有鼠标。之所以上电脑课用LOGO语言的时候我很慌,因为我觉得自己根本没有完全搞懂,处于一个半懂不懂的状态。那个东西回家却不能找爸妈帮忙。除了上课那40分钟以外,就再没有上机的机会了。我没办法通过课外练习弥补我课堂上的困惑。又或者那个时候,如果我努力的钻研一下课本,我不会迷糊,但如果我有一个实操的电脑摸索,我一定会觉得那相当简单。小学上电脑课的时候都是两个同学一台电脑。我的同桌总觉得那个小海龟非常简单,于是老师讲课的时候,他总是在脑洞大开的各种探索,当时的电脑还没有中央控制全部这种高端的功能,所以老师根本不知道,学生在下面瞎搞。也大概因为这样,我的注意力就好在看他脑洞大开上面,因此忽略了老师。之所以同桌觉得那超简单,因为他家里有电脑。对我来说,小学的记忆中,电脑是个恐怖的存在。那门课对我来说比其它课程都要让我忐忑,但当时所有人都意识到,电脑将是未来需要掌握的基础技能,不懂电脑跟文盲没啥区别。

初中的时候,我家里终于有了电脑,那是一台别人淘汰的机子。虽然说是被淘汰的,但是没被淘汰之前,又或者新买回来的时候那东西很贵。小学时候,学校的机房学生用386,没有鼠标,只有老师的那台486才有鼠标,下课的时候我们会围看老师玩纸牌。所以当亲戚的那台旧电脑搬到我家的时候。我根本不知道如何用Windows系统。连怎么关机我都不会。鼠标单击双击左键右键是个迷之存在。虽然,亲戚的朋友把机装好以后,给我演示了一下要怎么操作,但实际上我只是迷迷糊糊似懂非懂,关个机费了九牛二虎之力。小学时的LOGO语言没学好,因为我没看书,家里也没电脑,当我家里有了电脑以后,我买了一些Windows操作系统的书,也看过一些Windows和Office类的教学光盘,于是,我终于不慌了。虽然那个DOS系统还是会让我莫名紧张,但看到Windows界面就会觉得安稳。

又过了好多年。电脑这东西几乎变成了老古董,现在大家用得最多的是各种智能设备。虽然样式在变化,但实际上最核心的东西仍然不变,无论是从前小学里我们用386的时候,还是现在的各种智能终端上的AI系统,核心的东西依然是编程算法。

冥冥之中,我总是要跟一些我早年害怕的东西打交道。大概战胜自己就是活着的意义。

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