defqiuhe(x,y):"""
用于求和的函数。
Input:
x:接收1个实数;
y:接收1个实数。
Output:
返回x+y的计算结果
"""
z = x + y
return z
result = qiuhe(1,2)# 函数的调用
qiuhe(y=1,x=2)
3
t =[i for i inrange(1,51)]
k =0whilelen(t)>3:
i =0while i<len(t):
k +=1if k ==4:
t.remove(t[i])
k =0else:
i +=1print(t)
[1, 30, 47]
t =[i for i inrange(1,101)]
k =0whilelen(t)>1:
i =0while i<len(t):
k +=1if k ==9:
t.remove(t[i])
k =0else:
i +=1print(t)
[82]
t =[i for i inrange(1,40)]
k =0whilelen(t)>2:
i =0while i<len(t):
k +=1if k ==3:
t.remove(t[i])
k =0else:
i +=1print(t)
[10, 25]
defplay(players,step,alive):
players =int(input("总共几人:"))
step =int(input("数到几淘汰:"))
alive =int(input("最后剩余几人:"))
t =[i for i inrange(1,players+1)]
k =0whilelen(t)>alive:
i =0while i<len(t):
k +=1if k == step:
t.remove(t[i])
k =0else:
i +=1return t
play(1,2,3,)
总共几人:39
数到几淘汰:3
最后剩余几人:2
[10, 25]
# 生成一个列表,从【1.....players】
"""
模拟约瑟夫环问题的函数
players:玩家人数
step:数到step数字的人淘汰
alive:幸存人数,即游戏结束
t:返回一个列表,列表中元素为幸存者编号
"""defplay(players,step,alive):
t =[i for i inrange(1,players+1)]# 生成一个列表,从【1.....players】
k =0# 进入游戏的循环,每次数到step淘汰,step之前的元素移到列表末尾# 游戏结束的条件:列表剩余人数小于alivewhilelen(t)>alive:
i =0# 移动step前的元素到列表末尾while i<len(t):
k +=1if k == step:
t.remove(t[i])# 将数到step的元素从列表中删除
k =0else:
i +=1return t
def qiuhe(x,y): """ 用于求和的函数。 Input: x:接收1个实数; y:接收1个实数。 Output: 返回x+y的计算结果 """ z = x + y return zresult = qiuhe(1,2) # 函数的调用qiuhe(y=1,x=2)3t = [i for i in range(1,51)]k = 0while len(t)>3: i