回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我还在学习Python和这里的基本规则,所以如果我犯了错误,请纠正我。没有适当的批评和指导,一个人无法成长。你知道吗</p>
<p>我想帮我妻子安排一个募捐活动的志愿者日程。一天包含7个每小时一次的活动,我有7个每小时一次的时间表,让一个人为7个活动中的4个工作,供志愿者挑选。你知道吗</p>
<p>此代码所做的是根据我现有的志愿者数量,计算我需要满足活动志愿者要求的每个时间表的数量。我目前不知道她将有多少志愿者。你知道吗</p>
<pre><code>import random
# Volunteer Requirements for each of the 7 events
r = [6, 12, 14, 14, 12, 16, 10]
# Available Schedules where 0 = hour off and 1 = hour working
s = []
s.append([0,1,1,1,1,0,0])
s.append([0,0,1,1,1,1,0])
s.append([0,0,0,1,1,1,1])
s.append([1,1,1,1,0,0,0])
s.append([1,1,0,0,0,1,1])
s.append([1,1,1,0,0,0,1])
s.append([1,0,0,0,1,1,1])
number_of_schedules = len(s)
number_of_vols = 21
number_of_hours = len(s[0])
while True:
q = [0]*number_of_schedules
for i in range(number_of_vols):
q[random.randint(0,len(q)-1)] += 1
t = [sum([q[j]*s[j][i] for j in range(number_of_schedules)]) for i in range(number_of_hours)]
if sum([r[i] <= t[i] for i in range(number_of_hours)]) == number_of_hours:
print '\n'.join(map(str,q))
print '\n'.join(map(str,s))
break
</code></pre>
<p>当我运行代码时,它打印为:</p>
<pre><code>3
8
2
1
6
2
0
[0, 1, 1, 1, 1, 0, 0]
[0, 0, 1, 1, 1, 1, 0]
[0, 0, 0, 1, 1, 1, 1]
[1, 1, 1, 1, 0, 0, 0]
[1, 1, 0, 0, 0, 1, 1]
[1, 1, 1, 0, 0, 0, 1]
[1, 0, 0, 0, 1, 1, 1]
</code></pre>
<p>这告诉我,为了满足要求,我将需要3个人采取第一时间表,8采取第二,2采取第三,以此类推。你知道吗</p>
<p>我要做的是将列表“s”构建为dict,这样我就可以为每个计划指定一个名称,即“计划a”、“计划B”等。这样我就可以调用print函数来打印每个计划所需的次数。你知道吗</p>
<p>当我调用print函数时,首选的最终结果如下所示。你知道吗</p>
<pre><code> Schedule A
Schedule A
Schedule B
Schedule B
Schedule B
Schedule B
Schedule B
........
Schedule G
</code></pre>
<p>然后每个志愿者可以把他们的名字放在一个可用的时间表旁边。你知道吗</p>
<p>我遇到的问题是,无论我尝试什么方法,我都无法让它正常工作。我希望在周五之前完成,因为我妻子想在这个周末发一封志愿者请求邮件。任何人能提供的任何帮助/指导都将不胜感激。你知道吗</p>
<p>提前谢谢。你知道吗</p>