美文网首页自学编程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