Python随机座位生成器与内存

所以我做了一些类似的项目search,没有遇到任何推动我在正确的方向,但如何解决这个项目,所以我来这里堆栈得到一些build议。 我不一定是在寻找这个项目的完整解决scheme,因为我想自己解决这个问题,只是简单地寻求一些关于如何解决这个问题的build议。

我正在尝试做什么

我正在编写一个程序,随机生成八个星期的座位表。 它从excel文件中读取80个名字的列表,并吐出另一个excel文件,在这个输出文件中有8个工作表,每个星期一个,每个工作表都有一个不同的随机生成的8×10座位表。 容易吗?

有三个额外的标准,我想实现这使得这个更复杂一点:

  • 我想避免让任何一个学生坐在同一个学生的旁边(前面,后面或旁边)任意两个星期
  • 我不想让任何一个学生坐在前排或后排超过一周
  • 这些学生一起住在宿舍里,我希望在任何一周里都不要有同一个房间的学生坐在一起

这是一个为期8周的MBA课程,我尝试这样做的全部原因就是将学生介绍给新的同学并引发新的交stream。

到目前为止我所做的

from openpyxl import Workbook, load_workbook import random import itertools load_wb = raw_input('What is the name of the file containing your students?\n') num_of_weeks = int(raw_input('How many weeks would you like?\n')) dest_filename = 'seating_chart.xlsx' students = [] load_wb = load_workbook(load_wb).active for cell in load_wb.iter_rows(): students.append(cell[0].value) def make_grid(): #Make the 8 x 10 grid y_list = list(range(1, 11)) x_list = list(range(1, 9)) grid = [] for y in y_list: for x in x_list: grid.append((x,y)) return grid save_wb = Workbook() grid = make_grid() for week in range(num_of_weeks): week +=1 if week == 1: ws = save_wb.active else: ws = save_wb.create_sheet() ws.title = 'Week '+str(week) #Randomly shuffle the students array random.shuffle(students) for x, student in itertools.izip(grid, students): x,y = x ws.cell(row=x, column=y, value=student) save_wb.save(filename=dest_filename) 

我知道,我显然将不得不存储每个学生每周坐的位置的值,并在生成随机图表时参考这些值,但我对Python相对较新,不确定如何最好地处理这个问题。

提前感谢大家的build议! 🙂

乔伊

这里有一个方法:

  1. 将class级分成两组,A组中没有人与B组同住(如果所有宿舍组为8人,或者几乎可能)
  2. 把A组安排成棋盘格式,并让他们保持整个座位
  3. 将B组安排成棋盘格式,坐在A周围。每节课,将B组3个座位在短维度上移动一个座位。 像环面一样缠绕两个方向。 你准确的8到这里重复座位前,这是方便的