一、每日一题
蓝桥杯真题之工作时长
这个题写代码做的话很麻烦,而且我也不一定能写出来,所以我直接就是用的excel来计算的时间和。
使用excel的做法
1.先把文件中的时间复制到excel中。
2.把日期和时间分到两列。
分成两列的步骤:
选中要分列的数据(注意!只能选择一列,多列不可操作),在上面找到数据,再找到分列这个操作。
点进去后选择分隔符号,点击下一步。
只选择空格,不选择其他的,之后点击下一步。
格式可以选择常规,也可以选择日期,没太大影响。
最后点击完成即可。
最后得到的结果,不知道为什么后面会有0:00,但是不影响结果计算,主要是把时间单独分出一列来即可。
3.计算一天中上下班的时间差
在新的一列中这样写出计算公式,并得出结果,往下复制,excel会根据对应的单元格得出相应的数据,复制几个后,可以点右下角的加号向下拉,就能得出两个单元格的的差值,就是一天中上班的时间。
4.计算每天上班时间的和
5.换算成秒
计算出时间总和的时间单位为天,一天24*60*60s = 86400s。最后结果为5101913s。
在蓝桥杯官网提交结果后,运行成功通过。
二、双链表
单链表只可以实现数据不断向前寻找,不可以向后寻找,为了提高效率,从而引出双链表。
双链表的每个节点有两个指针,一个指向后一个节点,一个指向前一个节点,这样既可以向前寻找数据,也可以向后寻找。
双链表的初始化及基本操作。
class Node: def __init__(self, data=None): self.data = data self.next = None self.prev = None class DoublyLinkedList: def __init__(self): self.head = None # 在链表末尾添加节点 def append(self, data): if not self.head: self.head = Node(data) else: new_node = Node(data) current = self.head while current.next: current = current.next current.next = new_node new_node.prev = current # 在链表开头添加节点 def prepend(self, data): new_node = Node(data) new_node.next = self.head if self.head: self.head.prev = new_node self.head = new_node # 删除指定数据的节点 def delete(self, data): current = self.head if current and current.data == data: self.head = current.next if self.head: self.head.prev = None return while current and current.data != data: current = current.next if current.next: current.next.prev = current.prev if current.prev: current.prev.next = current.next # 打印链表 def print_list(self): current = self.head while current: print(current.data, end=' ') current = current.next print() # 示例
dll = DoublyLinkedList()
dll.append(1)
dll.append(2)
dll.prepend(0)
dll.print_list() # 输出: 0 1 2
dll.delete(1)
dll.print_list() # 输出: 0 2