COMP9021--7.1
1. 读取相对位置的字符:file[start:end]
2. 找到最久没有被使用过的姓名:csv.reader, with open
read file
seperate the file by giving different part different names【 for line in csv_file:
name,_,_ = line (the line looks like ''Eve',"F","23") 】
create a dictionary, key is name, the list of year is the value
if name in d, add to the list, otherwise create a new list
3. 为了让代码看起来更简单,from collections import defaultdict, in this way it is fine to create an empty dictionary
4. 当我们想要根据一个element的大小来进行倒序排列但是不能用reverse时,可以将这个element变成负数
5. 扔石头问题,用尽量少的步骤和有限的石头得到从哪层扔石头石头可以正好摔碎
假如我们只有两颗石头,第一颗可以从二楼扔,如果碎掉第一颗就尝试从一楼扔;如果第一颗没有碎就去4楼扔,以此类推
如果我们用二分法,比如第一次从中间楼层扔,石头碎掉,为了得到具体在哪一层正好摔碎我们可能依然需要进行多次测试,不符合石头个数有限的大前提
在模拟这个试验过程中我们可以from random import randint,随机抽取一个数作为石头恰好碎掉的点。我们要先找到石头可以碎掉的点和一个石头不会碎掉的点,然后慢慢减少两点的差距,直至这个差值减小为1
根据我们在只有两颗石头中得到的规律,第一颗石头应该扔的位置应该等于我们拥有的石头总数(如果石头碎了我们最差的结果就是一层一层遍历找到真正意义上的可碎点)
随着石头数量的 减少与上述差值的不断减小,最终得到准确楼层
这里要关注一下base case: 即楼是0层以及没有石头
6. import math
math.ceil(x)
向上取整