美文网首页自学编程Python日更成长营
自学Python:给小朋友们分糖果

自学Python:给小朋友们分糖果

作者: 小强聊成长 | 来源:发表于2021-11-26 12:32 被阅读0次

    10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。

    然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。

    问经过这样几次后大家手中的糖一样多?每人各有多少块糖?

    下面直接上代码:

    ########################

    # 判断每个孩子手中的糖果数是否相同

    def judge(candy):

        for i in range(0,10):

            if candy[0] != candy[i]:

                return 1      # 不相同返回1

        return 0      #相同返回0

    def givetangguos(tangguo, j):

        t = [0] * 10

        while (judge(tangguo)):    # 若不满足要求则继续循环

            # 将每个孩子手中的糖果数平分为两份

            for i in range(0, 10):

                if tangguo[i] % 2 == 0: # 若为偶数则直接分出一半

                    tangguo[i] = tangguo[i] // 2

                    t[i] = tangguo[i]

                else:      # 若为奇数则加1后再分出一半

                    tangguo[i] = (tangguo[i] + 1) // 2

                    t[i] = tangguo[i]

            # 将分出的一半糖果给右边的孩子

            for n in range(0, 9):

                tangguo[n + 1] = tangguo[n + 1] + t[n]

            tangguo[0] += t[9]

            j += 1

            printResult(tangguo, j)

    # 输出列表中每个元素的值

    def printResult(s, j):

        print("%4d" %j , end=" ")

        k = 0

        while k < 10:

            print("%4d" % s[k], end=" ")

            k += 1

            j += 1

        print()

    if __name__=="__main__":

        # 定义一个列表来存储老师给每个孩子分配的糖果数

      # tangguo[0]=10表示第一个小孩的糖果数为10,以此类推

        tangguo = [10, 2, 8, 22, 16, 4, 10, 6, 14, 20]

        print("child  1    2    3    4    5    6    7    8    9  10")

        print("..........................................................")

        print("次数  糖果数")

        # 输出每个孩子手中的糖果数

        j = 0

        print("%4d" % j, end=" ")

        for i in range(len(tangguo)):

            print("%4d" % tangguo[i], end=" ")

        print()

        givetangguos(tangguo,j)  # 分糖果

    ########################

    执行结果如下:

    child 1 2 3 4 5 6 7 8 9 10

    ..........................................................

    次数  糖果数

      0  10    2    8  22  16    4  10    6  14  20

      1  15    6    5  15  19  10    7    8  10  17

      2  17  11    6  11  18  15    9    8    9  14

      3  16  15    9    9  15  17  13    9    9  12

      4  14  16  13  10  13  17  16  12  10  11

      5  13  15  15  12  12  16  17  14  11  11

      6  13  15  16  14  12  14  17  16  13  12

      7  13  15  16  15  13  13  16  17  15  13

      8  14  15  16  16  15  14  15  17  17  15

      9  15  15  16  16  16  15  15  17  18  17

      10  17  16  16  16  16  16  16  17  18  18

      11  18  17  16  16  16  16  16  17  18  18

      12  18  18  17  16  16  16  16  17  18  18

      13  18  18  18  17  16  16  16  17  18  18

      14  18  18  18  18  17  16  16  17  18  18

      15  18  18  18  18  18  17  16  17  18  18

      16  18  18  18  18  18  18  17  17  18  18

      17  18  18  18  18  18  18  18  18  18  18

    到第17次的时候大家手上的糖果就一样了。

    ________________END______________

    相关文章

      网友评论

        本文标题:自学Python:给小朋友们分糖果

        本文链接:https://www.haomeiwen.com/subject/marbtrtx.html