Python洗牌列表不工作
我是python新手。从C++背景来看,我很讽刺地理解了这种语言的简单性,更不用说如何闲置工作了。p> 无论如何,我需要编写一个简单的函数,它接受一个列表并返回一个新列表,其中的元素被洗牌 这就是我目前所拥有的Python洗牌列表不工作,python,Python,我是python新手。从C++背景来看,我很讽刺地理解了这种语言的简单性,更不用说如何闲置工作了。p> 无论如何,我需要编写一个简单的函数,它接受一个列表并返回一个新列表,其中的元素被洗牌 这就是我目前所拥有的 import random def shuffle(): aList = [] i = 0 for i in range(0, 5): elements = input(": ") aList.append(elements)
import random
def shuffle():
aList = []
i = 0
for i in range(0, 5):
elements = input(": ")
aList.append(elements)
shuffleList = random.shuffle(aList)
return shuffleList
shuffle()
在我输入元素(本例中为数字)后,没有任何输出。。所以出于某种原因,shuffleList没有出现在那里。有什么想法吗
将列表洗牌到位,其输出为None
由于您将其输出存储并返回到shufflist=random.shuffle(aList)
,因此不会打印任何内容
因此,请将aList
返回:
import random
def shuffle():
aList = []
i = 0
for i in range(0, 5):
elements = input(": ")
aList.append(elements)
random.shuffle(aList)
return aList
random.shuffle()
将列表重新排序到位,但不返回任何结果。random.shuffle
是一种到位操作,它不返回任何内容
>>> l
[0, 1, 2, 3, 4]
>>> random.shuffle(l)
>>> l
[0, 3, 1, 4, 2]
工作,这意味着它更新提供的参数,而不是返回值(默认值除外,None
)。在C++中,您需要传递一个引用到列表中(例如,代码> int *<代码> >,但是在Python中,这种区别并不存在。
所以,实际上您正在将shuffleList
设置为None
,然后返回它
您可以通过使用print
在完成后实际显示结果来确认这一点-据我所知,仅从函数返回值不会输出任何内容:
results = shuffle()
print results
要修复它,只需返回aList
,而不是将结果存储在另一个变量中:
random.shuffle(aList)
return aList
Shuffle会对列表进行洗牌,但不会返回新列表。试试这个:
import random
def shuffle():
aList = []
for i in range(0, 5):
elements = input(": ")
aList.append(elements)
random.shuffle(aList)
return aList
print shuffle()
你不需要在循环之前初始化迭代变量。如果IDLE不适合你,就不用麻烦了。一定要安装IPython,因为IPython控制台远远优于默认的REPL。我会选择Sublime。更美观,更实用。我必须使用空闲,因为这是学校的要求。我不喜欢这样的事实,我必须在shell中调用函数,而不是只按run。您正在打印无法工作的函数。返回该列表就足够了。我相信这就是问题所在。我在反对票开始滚滚而来之后加上了这张照片,顺便说一句,这会奏效的。你们只是在打印一张清单,真的吗?为什么会有反对票?这个很好用!
import random
def shuffle():
aList = []
for i in range(0, 5):
elements = input(": ")
aList.append(elements)
random.shuffle(aList)
return aList
print shuffle()