鱼C论坛

 找回密码
 立即注册
查看: 25|回复: 1

《零基础入门学习Python》【最新版】第7课动手双色球的问题

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

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

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

x
import random

x = random.sample(range(1,33), 6)
y = random.randint(1, 16)
z = x.append(y)

print(z)

这样写输出的z为什么是None,为什么不能将列表x末尾插入y后赋值给z。而是要下面这样写

import random

x = random.sample(range(1,33), 6)
y = random.randint(1, 16)
x.append(y)
z = x
print(z)

才能正确输出z的值
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 22:29 | 显示全部楼层
你的代码中,x.append(y) 方法返回的是 None,因此赋值给 z 后打印出来就是 None。

这是因为在 Python 中,列表的 append() 方法会直接修改原列表(称为“原地操作”),而不会返回修改后的新列表。它的返回值是 None,所以你无法通过赋值获取修改后的列表。

正确的做法是:
  1. import random

  2. x = random.sample(range(1, 34), 6)  # 注意:要包括33,所以用range(1, 34)
  3. y = random.randint(1, 16)
  4. x.append(y)  # 这一步直接修改x,没有返回值
  5. z = x  # 此时x已经包含了y,将x赋值给z
  6. print(z)
复制代码


如果你希望保持代码的连贯性,可以这样写:
  1. import random

  2. x = random.sample(range(1, 34), 6)
  3. y = random.randint(1, 16)
  4. z = x + [y]  # 创建一个新列表,包含x的所有元素和y
  5. print(z)
复制代码


或者使用列表解析:
  1. import random

  2. z = random.sample(range(1, 34), 6) + [random.randint(1, 16)]
  3. print(z)
复制代码


总结一下:
- append() 方法会修改原列表,返回 None
- 如果要得到新列表,可以使用列表拼接(+)的方式
- 注意 random.sample(range(1, 33), 6) 实际上只包含 1-32,要包含 33 应该用 range(1, 34)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-28 04:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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