Python题目描述: n个小朋友做游戏,编号从1到n。他们按编号大小从小到大依次顺时针围成一?

Python010

Python题目描述: n个小朋友做游戏,编号从1到n。他们按编号大小从小到大依次顺时针围成一?,第1张

下面是一个 Python 程序的示例,用来模拟 n 个小朋友做游戏的情况,编号从 1 到 n 依次顺时针围成一圈,第一个小朋友开始报 m,第二个小朋友开始报 m-1,第 m 个小朋友开始报 1,顺时针方向报数减 1,报 1 的人会离开,下一个小朋友继续报 m。直到只剩一个小朋友。

首先读入小朋友的数量 n 和报数的数字 m。

然后创建一个空列表,用来存储小朋友的编号。

使用一个 for 循环,按照编号大小从小到大

然后,使用一个 while 循环,模拟游戏的过程。循环条件为 children 列表的长度大于 1。

在循环体内,首先计算当前报数的小朋友的下标。这里使用 (m - 1) % len(children) 的方式计算。

然后,将当前报数的小朋友从列表中删除。使用 pop() 函数删除列表中的指定下标的元素。

接着,重新计算报数的数字。这里可以将 m 减去 1。

循环结束后,就会剩下最后一个小朋友。

最后,输出最后一个小朋友的编号。使用 children 列表的第一个元素(即下标为 0 的元素)。

# encoding=UTF-8

import random

# 定义石头剪子布字典

dict = {1:'剪子',2:'石头',3:'布'}

count1=10

count2=10

while count1>0 and count2>0:

    for row in dict:

        print '编号:',row,' = ',dict[row]

    print '您出什么?'

    loop = True

    while loop:

        you = raw_input('请输入编号回车: ')

        try:

            you = int(you)

            if you>=1 and you<=3:

                loop = False

            else:

                print '请输入 1-3 范围内的编号'

        except Exception,e:

            print '请输入正确的数字编号'

    dn = random.randint(1,3)

    print '你出:',dict[you]

    print '电脑出:',dict[dn]

    print '结果:',                                                               

                                                                                  

    if dn==you:                                                                   

        print '平局'                                                              

    elif (you>dn and you-dn==1) or you+2==dn:                                     

        print '你胜'                                                              

        count1+=1                                                                 

        count2-=1                                                                 

    else:                                                                         

        print '电脑胜'                                                            

        count2+=1                                                                 

        count1-=1                                                                 

    print '你现在的分数为:%s' %count1                                             

    print '电脑现在分数为:%s\n' %count2

结果为:

编号: 1  =  剪子

编号: 2  =  石头

编号: 3  =  布

您出什么?

请输入编号回车: 2

你出: 石头

电脑出: 石头

结果: 平局

你现在的分数为:10

电脑现在分数为:10