鱼C论坛

 找回密码
 立即注册
查看: 47|回复: 13

[学习笔记] 新人学习贴_按顺序插入列表

[复制链接]
发表于 昨天 18:42 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 网络草包 于 2026-5-24 18:47 编辑
  1. #需求:给定一个已经排序的整数列表,要求让用户输入一个数,并根据列表原有的排序规律将其插入到正确的位置
  2. l = [12, 33, 65, 75, 98]
  3. while True:
  4.     try:
  5.         num = int(input("请输入一个数字:"))
  6.         if num in l:
  7.             print("你输入的数字已存在请重新输入")
  8.             continue
  9.         for i in range(len(l)):
  10.             if l[i] > num:
  11.                 l.insert(i, num)
  12.                 break
  13.         else:
  14.             l.append(num)
  15.         print(l)
  16.     except:
  17.         print("请输入纯数字")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 18:42 | 显示全部楼层
你好!你的代码思路很清晰,但有几个小地方需要修正,这样才能正常运行:

1. 列表未初始化  
你需要先定义一个已排序的列表,例如:l = [1, 3, 5, 7, 9]

2. 判断条件写错了  
循环里应该是 if l[i] > num 而不是 if l > num

3. 缩进需要确认  
代码里的 else 应该是 for 的配套,你的缩进在当前文本里看起来是对的,但要注意在实际代码中保持正确。

下面是修正后的完整代码:

  1. l = [1, 3, 5, 7, 9]
  2. while True:
  3.     try:
  4.         num = int(input("请输入一个数字:"))
  5.         if num in l:
  6.             print("你输入的数字已存在请重新输入")
  7.             continue
  8.         for i in range(len(l)):
  9.             if l[i] > num:
  10.                 l.insert(i, num)
  11.                 break
  12.         else:
  13.             l.append(num)
  14.         print(l)
  15.     except:
  16.         print("请输入纯数字")
复制代码


这样就能实现「按顺序插入」的功能了,如果还有疑问欢迎继续提问!

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

使用道具 举报

 楼主| 发表于 昨天 18:45 | 显示全部楼层
FishC 发表于 2026-5-24 18:42
你好!你的代码思路很清晰,但有几个小地方需要修正,这样才能正常运行:

1. 列表未初始化  

怎么发成你写的这个代码的这个样子?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 18:45 | 显示全部楼层
网络草包 发表于 2026-05-24 18:45
FishC 发表于 2026-5-24 18:42
你好!你的代码思路很 ...


你希望将代码发布成我回复中的样子,也就是使用 BBCode 格式。在 Discuz! 论坛中,代码块用
  1. 代码内容
复制代码
来包裹,行内代码用 行内代码 来显示灰底效果。  

例如:  
  1.   
  2. l =   
  3. while True:  
  4.     ...  
复制代码


如果你想在行内突出某个变量,可以写成:  
请使用 l.insert(i, num) 方法。  

这样就能和我回复中的格式一致了。

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

使用道具 举报

 楼主| 发表于 昨天 18:47 | 显示全部楼层
FishC 发表于 2026-5-24 18:45
你希望将代码发布成我回复中的样子,也就是使用 BBCode 格式。在 Discuz! 论坛中,代码块用  来包裹, ...

我把帖子修改了,在帮我看一下还有错吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 18:48 | 显示全部楼层
网络草包 发表于 2026-05-24 18:47
FishC 发表于 2026-5-24 18:45
你希望将代码发布成我 ...


您好!请将您修改后的完整代码贴出来,我再帮您检查一下还有没有错误。您可以直接用 代码 或代码块的方式提供。

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

使用道具 举报

 楼主| 发表于 昨天 18:48 | 显示全部楼层
FishC 发表于 2026-5-24 18:48
您好!请将您修改后的完整代码贴出来,我再帮您检查一下还有没有错误。您可以直接用 代码 或代码块的方 ...
  1. #需求:给定一个已经排序的整数列表,要求让用户输入一个数,并根据列表原有的排序规律将其插入到正确的位置
  2. l = [12, 33, 65, 75, 98]
  3. while True:
  4.     try:
  5.         num = int(input("请输入一个数字:"))
  6.         if num in l:
  7.             print("你输入的数字已存在请重新输入")
  8.             continue
  9.         for i in range(len(l)):
  10.             if l[i] > num:
  11.                 l.insert(i, num)
  12.                 break
  13.         else:
  14.             l.append(num)
  15.         print(l)
  16.     except:
  17.         print("请输入纯数字")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 18:48 | 显示全部楼层
网络草包 发表于 2026-05-24 18:48
FishC 发表于 2026-5-24 18:48
您好!请将您修改后的 ...


你的代码逻辑大致正确,但有一处关键错误:if l > num: 这一行里 l 代表整个列表,不能直接和整数比较大小。应改为 if l[i] > num:,用索引访问列表中的元素。

修正后的核心部分如下:  
  1.     for i in range(len(l)):  
  2.         if l[i] > num:  
  3.             l.insert(i, num)  
  4.             break  
  5.     else:  
  6.         l.append(num)
复制代码


其他部分(如列表初始化、异常处理等)均正确。

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

使用道具 举报

 楼主| 发表于 昨天 18:50 | 显示全部楼层
FishC 发表于 2026-5-24 18:48
你的代码逻辑大致正确,但有一处关键错误:if l > num: 这一行里 l 代表整个列表,不能直接和整数比较 ...

你眼花了吧?我的for循环下面写的的确是  if l[i] > num    啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 18:50 | 显示全部楼层
网络草包 发表于 2026-05-24 18:50
FishC 发表于 2026-5-24 18:48
你的代码逻辑大致正确 ...


不好意思,我重新仔细看了你贴出的最新代码:


  1. l =
  2. while True:
  3.     try:
  4.         num = int(input("请输入一个数字:"))
  5.         if num in l:
  6.             print("你输入的数字已存在请重新输入")
  7.             continue
  8.         for i in range(len(l)):
  9.             if l > num:        # 这里写的是 l,不是 l
  10.                 l.insert(i, num)
  11.                 break
  12.         else:
  13.             l.append(num)
  14.         print(l)
  15.     except:
  16.         print("请输入纯数字")
复制代码


你写的是 if l > num:,其中的 l 是字母 l 而不是数字 1,而且没有加上索引 l。如果按照这样运行,Python 会报错:TypeError: '>' not supported between instances of 'list' and 'int'(列表无法与整数比较大小)。

正确的写法应该是使用索引访问列表中的元素:if l > num:(注意是 l,索引 i 在方括号里)。

你可能是在论坛编辑时不小心写成了字母 l 而不是 l,或者混淆了标签的用法。请再检查一下你实际编辑框里的代码,确保是 l > num 而不是 l > num。如果确实写对了,那这段代码就能正常运行。

如果还有其他疑问,欢迎继续反馈。

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

使用道具 举报

 楼主| 发表于 昨天 18:52 | 显示全部楼层
FishC 发表于 2026-5-24 18:50
不好意思,我重新仔细看了你贴出的最新代码:

你该进步了,眼神实在不好
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 18:53 | 显示全部楼层
网络草包 发表于 2026-05-24 18:52
FishC 发表于 2026-5-24 18:50
不好意思,我重新仔细 ...


哈哈哈,您批评得对!是我眼花了,没看清您写的是 l 这个变量名。实际上 l 是列表的名字,而 l 才是正确的索引访问写法。您贴出的代码中 if l > num: 确实应该写成 if l > num:(即列表名后面跟方括号加索引变量 i)。  

如果您实际代码中写的是 if l > num:,那么它完全正确!是我误把 l 看成了 l,自动忽略了 部分。抱歉抱歉,我该去升级一下眼神补丁了!  

您的代码已经没问题,祝您学习愉快!

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

使用道具 举报

发表于 昨天 18:59 | 显示全部楼层
代码写得很工整,注释也很清晰。

不过 Python 有一个 bisect 模块,专门干这个事的,可以一行搞定:

import bisect
bisect.insort(l, num)

insert 和 insort 的区别在于 insort 会自动找到正确的位置插入,不用自己写循环。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 19:04 | 显示全部楼层
小派 发表于 2026-5-24 18:59
代码写得很工整,注释也很清晰。

不过 Python 有一个 bisect 模块,专门干这个事的,可以一行搞定:

可以写的完整一些吗?不知道怎么使用bisect.insort
应该放在哪个位置,能起到什么作用
可以省略哪些东西
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-25 00:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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