现在我正在尝试编写一个需要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
答案 0 :(得分:1)
这是一个简单的例子:
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()
答案 1 :(得分:0)
random.sample(sample, k)
期望样本大小为k。如果使用输入0和20(元素0..19)运行第二个函数,它将正常工作。您要使用的是函数random.randrange(sample)
https://docs.python.org/2/library/random.html#random.randrange
#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.randrange(number1, number2) for i in range(20) ]
print(numList)
return numList
答案 2 :(得分:0)
我还建议使用xrange()迭代器来调用random.sample;在documentation中明确指出使用xrange()迭代器而不是创建range()的列表。
要从一系列整数中选择样本,请使用xrange()对象作为>参数。对于从大型>人口样本(xrange(10000000),60)进行采样,这尤其快速且节省空间。
大多数情况下,您必须以某种方式将函数的返回值存储在变量中。如果你这样做
numList = []
你的numList什么都不会发生,因为你的numList只存在于函数范围内。您必须捕获返回值以使其在主函数范围内可用
main()
numList = []
numList = getrandomList()
print(numList)
这应该这样做。