thwycqqi 发表于 2026-3-27 22:29:04

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

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的值

FishC 发表于 2026-3-27 22:29:40

你的代码中,x.append(y) 方法返回的是 None,因此赋值给 z 后打印出来就是 None。

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

正确的做法是:
import random

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

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

x = random.sample(range(1, 34), 6)
y = random.randint(1, 16)
z = x + # 创建一个新列表,包含x的所有元素和y
print(z)

或者使用列表解析:
import random

z = random.sample(range(1, 34), 6) +
print(z)

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 《零基础入门学习Python》【最新版】第7课动手双色球的问题