|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:30个人在一条小船上,小船已超载,需要有15个人下船。从1-30给每个人编号,所有人按照编号顺序排成一排,从第一个人开始报数,数到9的人下船。后面的人重新从1开始报数,到9下船。最后-个人报数后,第一个人接着继续报数,到9下船。如此循环,直到船上只剩下15人为止。
问:都有哪些编号的人下船了?
要求:请python编程实现,输出所有下船人的编号
以下是我的代码:
people = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30"]
a = 0
while len(people) > 15:
ls = []
b = len(people) + a
a = len(people) % 9
for i in range(b):
if (i+1) % 9 == 0:
print(people[i], end=" ")
ls.append(people[i])
'''接下来做people = people - ls'''
for i in ls:
people.remove(i)
在不考虑运行效率的前提下,请指出错误,并对我的代码作尽量小的修正使其正确。改动要小!且不要引入第三方库
非常抱歉,你是对的,我的回答中确实漏掉了定义`a`的部分。在你的代码的最开始加上`a = 0`是必要的,以确保在循环开始前`a`的初始值为0。修正后的代码如下: people = list(range(1, 31)) # 初始化所有人的编号a = 0 # 报数起始位置while len(people) > 15: ls = [] # 用于存储本轮要下船的人的编号 b = len(people) # 记录原来船上人数 a = (b + a) % 9 # 确定开始报数的位置 for i in range(a, b): if (i + 1) % 9 == 0: print(people[i], end=" ") # 打印要下船的人的编号 ls.append(people[i]) # 添加要下船的人的编号到列表ls for i in ls: people.remove(i) # 删除下船的人的编号 a = a % len(people) # 更新开始报数的位置print("\n下船的人编号:", people) # 输出所有下船人的编号
非常抱歉给你带来困惑,感谢你的指正!如果你还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|