2020-04
9

转换时间戳

By xrspook @ 15:18:47 归类于: 扮IT

脑袋实在转不过来,不知道怎么把1W多天转化为月份,长短月怎么处理?????所以直接暴力地使用本来就内置的time.localtime()以及time.strftime()格式化当前时间。我完全可以把逝去的时间也这么整,但逝去时间我是有认真人肉计算过的,所以同一个时间戳,用了两种方式转化。

经过这个以后,我完全明白点点导出数据里那一串标记着的数字是什么鬼,也不能说他们这样不好,因为转化为实在人肉可读的时间格式以后万一要用其它表达方式呢?一开始就用最原始的东西,前端表达用内置的函数格式化也就可以了。所以,大概看懂的人会会心微笑,看不懂的人会骂街。作为理论上应该可读的XML文件,他们这般“原始输出”实在够姜!

1
2
3
4
5
6
7
8
9
10
11
12
13
import time
def now(num):
    mytime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(num))
    return(str(mytime))
num = int(time.time())
sec = num % 60
min = (num // 60) % 60
hour = (num // (60 * 60)) % 24 + 8 # 万恶的东八区!!!!!!!!!!
day = num // (60 * 60 * 24)
print('Time is', now(num))
print('since the epoch, ' + str(day) + ' days ' + str(hour) + ' hours ' + str(min) + ' minutes ' + str(sec) + ' seconds has gone')
# Time is 2020-04-09 15:03:41
# since the epoch, 18361 days 15 hours 3 minutes 41 seconds has gone

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-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()
2020-04
7

挑选Markdown阅读器

By xrspook @ 10:23:52 归类于: 烂日记

昨天晚上我又花了好些时间为我的小米平板1选一个Markdown阅读器。如果这是我的手机的话,非常容易就解决了,因为坚果云Markdown完美解决了所有问题,但不知道为什么,虽然还在他们的安卓兼容范围之内,但是坚果云Markdown在小米平板1上打开md文件的时候会一片空白。那到底是为什么,我没搞懂,但是可以肯定的是,无论是在MIUI 9还是在MIUI 6都不行。我之前之所以选择坚果云Markdown,是因为那个东西是我试用过所有app安卓下,不需要任何设置,直接就能读取我手机或者我内存卡上面的md。这样的设置,看书的时候就很方便。其它阅读器,你可以在文件夹里通过某程序打开,但显然就不那么方便了。安卓系统里传统推荐的软件MarkdownX也不错,非常有可能不少Markdown编辑器都是抄他的。

有些Markdown编辑器是所见即所得的格式,他们觉得是很酷,但实际上会让人很眼花,因为Markdown的符号和Markdown转化后的样式都体现出来了,尤其像我这种不是为了写,纯粹为了看的人。坚果云Markdown之所以好,是因为它的编写和预览在同一个区域。一个转换按钮就可以从编写到达预览,文件打开后默认界面是预览。这样就完美解决了手机小屏这个问题了。不少安卓Markdown编辑器沿用的是电脑的那种,半屏编写半屏预览,所以明明我的小米平板要比我的手机大很多,但是被分了一半以后,阅读区域还是很少,这简直就是搞死人的节奏!我试了好多个Markdown编辑器,在预览这方面,很多都做得很一般。有些的确是全屏显示了,那问题是反应速度很慢,比如iA Writer。安装Firefox后,可以通过安装插件来实现阅读md文件。在手机上我觉得这是没有问题的,但是,当我在平板上这么做,生成的那个文件,字体就变小了。浏览器本身是可以通过手势扩大字体,但是那样的话阅读的时候就要不断左右移动页面,太烦了。我没有在Firefox安卓版的设置里找到自选字体大小。有一个选项是可以适应系统字体大小的,但系统的字体大小跟我阅读时的字体大小怎么可能一致呢?所以我真的不知道他们是怎么想的,无论是那个插件,还是Firefox本身,为什么我要在浏览器里使用可转换md格式插件,肯定是因为我要把那当做是阅读器,阅读器的字体这么小,叫人怎么看呢?折腾了一大轮以后,最终我选定一个2016年豌豆荚已经不再更新的MarkdownEditors。这个东西几乎可以这么说,是高仿MarkdownX的,功能和界面很类似的,但是那个东西更小巧,而最重要的是,虽然不可以在软件里选择打开手机上的东西。但是从手机的文件夹打开md文件后你可以在那里全屏预览。不好的大概是如果文件里面有编程语言,你无法高亮显示,还有一个不好就是当你打开了文件,哪怕只是打开预览之后要关掉,都会问你要不要保存。对比了装了插件的Firefox和MarkdownEditors,后者的字体大一些。这两个软件我都在小米平板1上留下了,因为说不准什么时候需要互补一下,因为Firefox中md文件的编程语言是有高亮的。

如果以后我能神通广大,我觉得我会自己动手写一个代码阅读/编辑器。

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