list1 = []
elective = []
prereq = []
someNumber = 1
dict2 = {
1: SEM2period1, 2: SEM2period2,
2: SEM2period3, 4: SEM2period4,
5: SEM2period5, 6: SEM2period6,
7: SEM2period7, 8: SEM2period8
}
for key, dlist in dict2.items():
if not dlist:
list1.append("Free Period")
someNumber += 1
continue
for item in dlist:
if item in list1:
continue
elif item in elective:
elecStorage.append(item)
elif item in prereq:
list1.append(item)
someNumber += 1
break
if someNumber > len(list1):
for index in elecStorage:
if index in list1:
break
else:
list1.append(index)
someNumber += 1
elecStorage[:] = []
break
注:(选修),选修和前提条件都包含字符串,如“微积分1”(为前提条件),或“天文学”中dict2的变量是包含函数较早调用的类(如教室中)名称的列表。Python代码不附加“免费时代”时,我希望它
以“for key,dlist in dict2.items()”开头的片段应该搜索第一个列表的元素,首先检查是否存在列表,如果没有列表,在列表中追加“Free Period”。然后它应该检查prereq中是否存在列表中的任何元素,最后如果没有,则将选项中的某些内容添加到它中。 (因为如果它超过了第一个条件,可以肯定至少有一个选修课是安全的),然后循环回去并对下一个元素列表执行相同的操作。
问题是,除非所有的列表都不包含任何内容,否则它不会追加'Free Period',我不知道为什么。
想法?
什么类型的对象SEM2periodX特别是没有时名单。这是否像“无”? – DanGar
这将是无,是的。 – LukeG
你能证实SEM吗?在至少有一个非空列表的情况下,它真的是None,而不是一个空列表吗? '[print x for x in dict2.values()]'应该有助于调试。 – clemej