关于小朋友分糖果作业的问题

关于小朋友分糖果作业的问题

问题描述:代码是否符合题给要求。

​# coding:utf-8

"""
有100个糖果,分给5个小朋友,每个小朋友分20个糖果,启动5个线程,来分糖果吧~
提示:5个线程可以看做5个小朋友
"""

import threading

# 初始化100颗糖果
candys = ['candy' for i in range(100)]
# 初始化5个小孩
childs = [1, 2, 3, 4, 5]
# 初始化每个小孩的糖果
candy = []
# 初始化结果
child_candy = {}


def share_candys():
index = 0
while len(candys) > 0:
if len(candy) < 20:
c = candys.pop()
candy.append(c)
elif len(candy) == 20:
child_candy[childs[index]] = candy
index += 1
candy.clear()
# print(len(candys))
# print(len(candy))
continue

# for each in childs:
# child_candy[each] = candy


if __name__ == '__main__':
for i in childs:
t = threading.Thread(target=share_candys)
t.start()
print(child_candy)
# print(len(candys))



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!

以上代码不符合题目要求,pop删除candys最后一个元素后,candys长度为0不满足循环条件,则child_candy[5]不会被添加进字典。

http://img1.sycdn.imooc.com//climg/60f8ea600970c4f007590479.jpg

以上代码总体的思路不太好,可以换一种思路,或根据以下思路调整代码。

import threading
# 初始化100颗糖果
candys = ['candy' for i in range(100)]
# 初始化5个小孩
childs = [1, 2, 3, 4, 5]
# 初始化结果
child_candy = {}
#设置index为全局变量
index = 0
def share_candys():
    # 初始化每个小孩的糖果,每次函数传入线程后candy初始化为空列表,就不用了清空
    candy = []
    # 设置index为全局变量,避免函数传入线程后index初始为0
    global index
    while len(candys) > 0:
        if len(candy) < 20:
            c = candys.pop()
            candy.append(c)
            if len(candy) == 20:
                child_candy[childs[index]] = candy
                index += 1
if __name__ == '__main__':
    for i in childs:
        t = threading.Thread(target=share_candys)
        t.start()
    print(child_candy)

祝学习愉快!


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师