person个人按1到person编号并围成一圈。从编号为1开始报数,报到num的人退出;def count_off(person: int, num: int): # 补充函数代码 print(count_off(9, 2)) # [2,4,6,8,1,5,9,7,3] print(count_off(11, 4)) # [4,8,1,6,11,7,3,2,5,10,9] print(count_off(20, 6)) # [6,12,18,4,11,19,7,15,3,14,5,17,10,8,2,9,16,13,1,20]下一个人从1开始报数直到报到num的人退出,如此重复下去直到留下最后一个人。通过函数count_off()获取退出编号列表
时间: 2023-08-20 08:06:03 浏览: 23
好的,以下是实现这个函数的代码:
```python
def count_off(person: int, num: int):
# 初始化编号列表
nums = list(range(1, person+1))
# 初始化当前报数的位置
pos = 0
# 初始化退出编号列表
result = []
# 开始报数
while len(nums) > 1:
# 计算要退出的人的位置
pos = (pos + num - 1) % len(nums)
# 将要退出的人的编号加入退出编号列表
result.append(nums.pop(pos))
# 将最后一个人的编号加入退出编号列表
result.append(nums[0])
return result
```
你可以通过调用该函数,传入 person 和 num 的值,获取退出编号列表。比如:
```python
print(count_off(9, 2)) # [2, 4, 6, 8, 1, 5, 9, 7, 3]
print(count_off(11, 4)) # [4, 8, 1, 6, 11, 7, 3, 2, 5, 10, 9]
print(count_off(20, 6)) # [6, 12, 18, 4, 11, 19, 7, 15, 3, 14, 5, 17, 10, 8, 2, 9, 16, 13, 1, 20]
```
这样就可以得到相应的退出编号列表了。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)