如何修改此代码以制作3个列表,每个列表中包含5个元素,而不是现在; 3个列表包含5/10/15个元素?
import random
y = []
def autoSolve():
for i in range(5):
z = random.randrange(1, 10)
y.append(z)
print(y, end="")
for i in range(3):
print("number", i + 1,)
autoSolve()
print()
答案 0 :(得分:10)
将y = []
移动到autoSolve方法中,以便在每次调用时重置。
def autoSolve():
y = []
for i in range(5):
z = random.randrange(1, 10)
y.append(z)
print(y, end="")
答案 1 :(得分:1)
您每次都打印相同的列表y
。
y
空出来。
for循环的第一次迭代,y
最终会有5个元素。
第二次迭代y.append
使其增加到10个元素。
为防止这种情况,请填写
行y=[]
在autoSolve()
方法中。
答案 2 :(得分:0)
将y = []
移至autoSolve
的开头。
答案 3 :(得分:0)
import random
y = []
def autoSolve():
x = []
for i in range(5):
z = random.randrange(1, 10)
x.append(z)
print(x, end="")
return x
for i in range(3):
print("number", i + 1,)
y.append(autoSolve())
print()
答案 4 :(得分:0)
import random
def autoSolve():
y = []
for i in range(5):
z = random.randrange(1, 10)
y.append(z)
return y #you could return instead, it'd be cleaner
for i in range(3):
print("number", i + 1,)
print(autoSolve())
number 1
[4, 8, 4, 2, 9]
number 2
[8, 2, 4, 8, 9]
number 3
[4, 8, 1, 3, 5]
[Program finished]
使用列表理解的替代方法,
import random
lists = [[random.randrange(1, 10) for i in range(5)] for j in range(3)]
for lst in lists:
print(f"Number: {lists.index(lst)+1}")
print(f"List: {lst}")
print("")
使用 random.choices
import random
lists = [random.choices(range(10), k = 5)for j in range (3 )]
for i, lst in enumerate(lists, start=1):
print(f"Number: {i}")
print(f"List: {lst}")
print("")
Number: 1
List: [0, 8, 4, 5, 0]
Number: 2
List: [3, 4, 6, 2, 1]
Number: 3
List: [9, 6, 5, 9, 9]
[Program finished]
答案 5 :(得分:-1)
我认为这是解决这个问题的合适方法。
import random
y = []
def autoSolve():
x = []
for i in range(5):
z = random.randrange(1, 10)
x.append(z)
y.append(x)
print(y, end="")
for i in range(3):
print("number", i + 1,)
autoSolve()
print()
此处输出将生成此[[],[],[]]格式 包含3个元素的内部列表的列表