下面是一个 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-8import 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