《零基础入门学习Python》【最新版】第7课动手双色球的问题
import randomx = 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的值 你的代码中,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]