返回随机整数列表,Python 3.3

返回随机整数列表,Python 3.3,python,Python,现在我正在尝试编写一个程序,它需要20个数字,并且可以用这些数字执行各种任务,例如查找最小/最大整数、求总数、平均数等等 我的核心程序正在运行,但我正在尝试添加一个附加选项,允许用户选择一系列数字,并创建一个包含20个值的列表。据我所知,我也写对了 我遇到的主要问题是,当我试图返回列表以便将其存储在先前定义的列表中时,它不会存储任何值 以下是我为用户编写的函数,用于输入他们自己的20个值: #Get Number List def input_numbers(): print("Plea

现在我正在尝试编写一个程序,它需要20个数字,并且可以用这些数字执行各种任务,例如查找最小/最大整数、求总数、平均数等等

我的核心程序正在运行,但我正在尝试添加一个附加选项,允许用户选择一系列数字,并创建一个包含20个值的列表。据我所知,我也写对了

我遇到的主要问题是,当我试图返回列表以便将其存储在先前定义的列表中时,它不会存储任何值

以下是我为用户编写的函数,用于输入他们自己的20个值:

#Get Number List
def input_numbers():
    print("Please enter a series of 20 numbers, pressing enter after each number.")
    numList=[int(input('Enter a number: ')) for i in range(20)]
    return numList
这就像一个符咒,不问任何问题

另一方面,这是我随机生成的列表:

#Randomly generate 20 numbers.
import random
def randomly_generate():
    number1= int(input("Please enter the lower number: "))
    number2= int(input("Please enter the higher number: "))
    numList=random.sample(range(number1, number2), 20)
    print(numList)
    return numList
澄清:我只是在函数内打印,看看随机数生成器是否工作,它是。它将在指定范围内打印20个值

但是,当我返回numList时,它没有像第一个函数那样正确地存储。这会给我带来问题,因为我无法使用空列表执行其他功能

编辑:问题的原因如下:我返回了值,但没有重新定义numList,因此产生了问题

        elif choice == RANDOMLY_GENERATE:
            randomly_generate()

#Randomly generate 20 numbers
#Import Random
import random
def randomly_generate():
    number1= int(input("Please enter the lower number: "))
    number2= int(input("Please enter the higher number: "))
    numList=random.sample(range(number1, number2), 20)
    print(numList)
    return numList

下面是一个简单的例子:

import random

def randomly_generate():
    number1= int(input("Please enter the lower number: "))
    number2= int(input("Please enter the higher number: "))
    numList=random.sample(range(number1, number2), 20)
    print(numList)
    return numList

if __name__ == "__main__":
    returned_list = randomly_generate()

    print(returned_list)
查看您的代码:

#Randomly generate 20 numbers
elif choice == RANDOMLY_GENERATE:
    randomly_generate()
您可以看到,您只是调用函数,而不是将函数的返回赋值给任何变量。您需要执行以下操作:

r_list = []
#...

#Randomly generate 20 numbers
elif choice == RANDOMLY_GENERATE:
    r_list = randomly_generate()
random.sample(sample,k)
希望样本大小为k。如果使用输入0和20(元素0..19)运行第二个函数,它将正常工作。您要使用的是函数
random.randrange(示例)


我还建议使用xrange()迭代器来调用random.sample;在中,明确指出使用xrange()迭代器而不是创建范围()的列表

要从整数范围中选择样本,请使用xrange()对象作为>参数。这对于从大型>总体:样本(xrange(10000000),60)中进行采样尤其快速且节省空间

最确定的是,您必须以某种方式将函数的返回值存储在变量中。如果你这么做

numList = []
您的numList永远不会发生任何事情,因为您的numList只存在于函数范围内。您必须捕获返回值,才能使其在主函数作用域中也可用

main()
    numList = []
    numList = getrandomList()
    print(numList)

这应该可以做到。

使用
int(输入(x))
是不安全的,因为它与
int(eval(原始输入(x)))
相同。而使用
int(原始输入(x))
。您试图将结果存储在哪里?你怎么知道它没有正确存储它们?@DanD。不在Python3下,它不会为我返回一个空列表。编辑调用此函数的代码来回答您的问题怎么样?如果您查看代码,显然不是这样。显然,您是在以一种方式调用第一个函数,而其他函数的调用方式不同——第一个函数使用返回值。其他的,你忽略它。
[random.choice(range(number1,number2)]
对于范围(20)中的i来说本质上与
random.sample(range(range)(range(number1,number2),20)是相同的,在
文件/usr/lib/python3.4/random.py”中的第315行,在sample
我的假设是,用户知道它应该是一个大于20的范围。此外,这不是这里的核心问题。您的建议re:xrange不适用于Python3,其中
range
返回一个延迟计算的迭代器。(对Python2有很好的建议)好吧,它甚至在帖子标题中有详细说明,我没有看到,我通常使用2.7,所以我忘了,但那是对的@zehnpaardThank!这解决了我的问题!我很感激你的建议。我没有意识到我没有在elif语句下设置numList=randomy\u generate()。我这样做是为了用户输入值,而不是随机生成的值。我为浪费你的时间感到难过,但这在天文学上帮助了我。@BrianMorris我们都会在某些时候犯这样那样的错误。很高兴我能成为你的朋友。
main()
    numList = []
    numList = getrandomList()
    print(numList)