【求助】小朋友分糖果的作业

【求助】小朋友分糖果的作业

老师,关于本章节7-2中小朋友分糖果的作业的编程,需要求助。

问题描述:

我自己编写的代码如下,做不到将100糖果平分给5个小朋友,而是出现了叠加的情况:第一个小朋友分到了20个,第二个小朋友却分到了40个(在第一个小朋友的基础上增加了20个),第三个和第四个小朋友依次类推

相关截图:

https://img1.sycdn.imooc.com//climg/64cc715909c7543f18610280.jpg

相关代码:

相关代码:# coding: utf-8


import threading
import random
from concurrent.futures import ThreadPoolExecutor


def child():
    if len(candy_list) == 0:
        return
    for i in range(20):
        candy = random.choice(candy_list)
        candy_list.remove(candy)
        child_list.append(candy)
    print(child_list)
    return child_list


if __name__ == '__main__':
    candy_list = []
    child_list = []

    for i in range(100):        # 定义100个糖果,放在列表中,并打印出来
        candy_list.append(i)
    print('candy_list is ', candy_list)

    for i in range(5):
        c = threading.Thread(target=child)
        c.start()

尝试过的解决方式:

方式一:线程池,每成功,但仔细想一想应该不是线程的问题,而是列表child_list的问题,是这个列表一直没变,所以产出了叠加的效果,于是尝试方式二

方式二:将列表child_list改成child_list = [][],改成二维,一维是5个小朋友,二维是20个糖果,但代码执行报错,这样操作应该是不行的,至此想不出来解决办法,请老师指导


正在回答

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

1回答

同学,你好!同学粘贴的代码是乱序的,无法确定同学的代码逻辑,同学可重新粘贴下代码,代码语言选择python

https://img1.sycdn.imooc.com//climg/64cc778809395eb401550152.jpg

方便解决同学的问题,祝学习愉快~

祝学习愉快~

  • 曲别针010 提问者 #1
    # coding: utf-8
    
    
    import threading
    import random
    from concurrent.futures import ThreadPoolExecutor
    
    
    def child():
        if len(candy_list) == 0:
            return
        for i in range(20):
            candy = random.choice(candy_list)
            candy_list.remove(candy)
            child_list.append(candy)
        print(child_list)
        return child_list
    
    
    if __name__ == '__main__':
        candy_list = []
        child_list = []
    
        for i in range(100):        # 定义100个糖果,放在列表中,并打印出来
            candy_list.append(i)
        print('candy_list is ', candy_list)
    
        for i in range(5):
            c = threading.Thread(target=child)
            c.start()


    2023-08-06 11:03:23
  • 好帮手慕小猿 回复 提问者 曲别针010 #2

    同学,你好!可在分糖果的函数中先设置装糖果的容器child_list为空列表,则每个孩子发糖的容器都为空了

    https://img1.sycdn.imooc.com//climg/64d09adc09e8810408100592.jpg

    祝学习愉快~

    2023-08-07 15:20:11
  • 曲别针010 提问者 回复 好帮手慕小猿 #3

    谢谢老师,问题已解决

    2023-08-08 09:34:52
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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