一、每日一题
蓝桥杯真题之工作时长
这个题写代码做的话很麻烦,而且我也不一定能写出来,所以我直接就是用的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