鱼C论坛

 找回密码
 立即注册
查看: 2882|回复: 9

[已解决]python问题

[复制链接]
发表于 2023-12-10 00:09:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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)

在不考虑运行效率的前提下,请指出错误,并对我的代码作尽量小的修正使其正确。改动要小!且不要引入第三方库
最佳答案
2023-12-10 00:20:36
Orig 发表于 2023-12-10 00:20
你的代码里为什么一开始都没有定义a,是不是应该在前 ...

非常抱歉,你是对的,我的回答中确实漏掉了定义`a`的部分。在你的代码的最开始加上`a = 0`是必要的,以确保在循环开始前`a`的初始值为0。修正后的代码如下:
  1. people = list(range(1, 31))  # 初始化所有人的编号
  2. a = 0  # 报数起始位置
  3. while len(people) > 15:
  4.     ls = []  # 用于存储本轮要下船的人的编号
  5.     b = len(people)  # 记录原来船上人数
  6.     a = (b + a) % 9  # 确定开始报数的位置
  7.     for i in range(a, b):
  8.         if (i + 1) % 9 == 0:
  9.             print(people[i], end=" ")  # 打印要下船的人的编号
  10.             ls.append(people[i])  # 添加要下船的人的编号到列表ls
  11.     for i in ls:
  12.         people.remove(i)  # 删除下船的人的编号
  13.     a = a % len(people)  # 更新开始报数的位置
  14. print("\n下船的人编号:", people)  # 输出所有下船人的编号
复制代码

非常抱歉给你带来困惑,感谢你的指正!如果你还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-10 00:12:52 | 显示全部楼层
FishC 发表于 2023-12-10 00:10
你的代码思路几乎正确,只需对其中几个细节进行修正即可。以下是你的代码修改后的版本:

那么这道题的结果是多少?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-10 00:20:10 | 显示全部楼层
FishC 发表于 2023-12-10 00:10
你的代码思路几乎正确,只需对其中几个细节进行修正即可。以下是你的代码修改后的版本:

你的代码里为什么一开始都没有定义a,是不是应该在前面加上一句:a = 0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-10 00:27:04 | 显示全部楼层
FishC 发表于 2023-12-10 00:20
非常抱歉,你是对的,我的回答中确实漏掉了定义`a`的部分。在你的代码的最开始加上`a = 0`是必要的,以确 ...

请详细解释一下:a = a % len(people)  # 更新开始报数的位置
这一句
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-10 00:36:20 | 显示全部楼层
FishC 发表于 2023-12-10 00:20
非常抱歉,你是对的,我的回答中确实漏掉了定义`a`的部分。在你的代码的最开始加上`a = 0`是必要的,以确 ...

为什么你的回答中一开始漏掉了定义`a`的部分?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-18 03:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表