鱼C论坛

 找回密码
 立即注册
查看: 1079|回复: 2

替换出现报错,该怎么解决?

[复制链接]
发表于 2024-1-25 10:38:41 | 显示全部楼层 |阅读模式

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

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

x
nums = [2,2,4,2,3,6,2]
nums.sort()
length = len(nums)
half = nums[length//2]
nums[half]
2

nums = [2,2,4,2,3,6,2]
half = nums[len(nums.sort())//2]
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    half = nums[len(nums.sort())//2]
TypeError: object of type 'NoneType' has no len()

为什么half = nums[len(nums.sort())//2] 就报错了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-25 10:39:32 | 显示全部楼层
在你的代码中,有两个问题导致报错。

第一个问题是你没有给nums赋值。在第一行的等号后面没有给nums赋值,所以它是一个空白对象(NoneType)。你需要提供一组数字给nums变量,例如:
nums = [2, 4, 1, 5]

第二个问题是你将half指向了nums,而不是复制nums的值给half。当你使用half = nums时,它们实际上指向同一个列表对象,而不是创建一个新的列表。所以当你对nums进行排序后,half也会被改变。如果你想要复制nums的值给half,你可以使用切片操作符[:],例如:
half = nums[:]

下面是修正后的代码:

nums = [2, 4, 1, 5]
nums.sort()

length = len(nums)
half = nums[:]
print(nums)
print(half)

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-25 11:08:50 | 显示全部楼层
本帖最后由 jackz007 于 2024-1-25 11:41 编辑

        nums.sort() 没有返回值,所以,len(nums.sort()) 其实就是 len(None),必然就会报错。
        所以,代码应该这么改:
nums = [2,2,4,2,3,6,2]
half = len(nums) // 2        # 获取列表 nums 的元素数量用 len(nums) 就可以了。
nums . sort()                # 想对 nums 排序,必须单独写一行代码。
print(nums[half])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 19:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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