python -- 教室调度问题 之dict方式

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import time

course_dict = {}
course_dict["美术"] = ["09:00", "10:00"]
course_dict["英语"] = ["09:30", "10:30"]
course_dict["数学"] = ["10:00", "11:00"]
course_dict["计算机"] = ["10:30", "11:30"]
course_dict["音乐"] = ["11:00", "12:00"]

result = []

def collect_course():
	for item in course_dict.keys():
		inner = []
		# 要比较的时间点 
		start = time.mktime(time.strptime(course_dict[item][0], "%H:%M"))
		end = time.mktime(time.strptime(course_dict[item][1], "%H:%M"))

		if (len(result)):
			 # 依次获取result中的每个item(都是list)
			for k in range(len(result)):
				each_list = result[k]
				conflict = False
				# 遍历当前list的数据,然后比较
				for i in range(len(each_list)):
					b = time.mktime(time.strptime(course_dict[each_list[i]][0], "%H:%M"))
					c = time.mktime(time.strptime(course_dict[each_list[i]][1], "%H:%M"))
					# 时间有冲突,查找下一个list
					if( (start < b and end > b and end < c) or (start > b and start < c) ):
						conflict = True
						break
				# 与当前list的数据都没有冲突,加入当前list,并跳出循环,进入下一轮
				if (i >= (len(each_list)-1) and not conflict):
					each_list.append(item)
					break
			# 遍历结束还有冲突,就重新构造list
			if( (k >= (len(result)-1)) and conflict):
				inner.append(item)
				result.append(inner)
		else: # 加入第一个元素
			print("just print one time")
			inner.append(item)
			result.append(inner)
	print(result)

if __name__ == "__main__":
	print(course_dict)
	collect_course()


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值