在 Python 中生成随机长度随机数列表的程序
Program to generate a random length list of random numbers in Python
我对编程和像这样的网站还很陌生,实际上才刚刚开始 class。我了解 Python 的基础知识,这两天我一直在用头撞墙。
以下是程序的要求,紧随其后的是我对代码的尴尬尝试。我不是在寻找它给我,但我不知道如何前进。
- 在 main 中,生成一个大于 5 且小于 13 的随机
integer
。
- 将此数字打印在自己的行上。
- 以随机整数作为唯一参数调用 makelist 函数。
makelist
函数内部:
创建一个空列表。
使用循环向列表追加等于随机整数参数的元素数。所有新的列表元素必须是 1 到 100(含)之间的随机整数。重复是可以的。
Return 主列表。
返回 main,捕获返回的列表并对其进行排序。
- 最后,使用
for
循环显示排序后的列表元素,全部在一行上,
- 以单个空格分隔。
到目前为止的代码:
import random
def main():
random_int = random.randint(6, 12)
print (random_int)
makelist()
def makelist():
num_list = []
for count in range(1, 101)
num_list.append(random_int)
main()
你已经完成了大部分。
为了在 makelist
中创建一个长度等于您在 main() 中获得的随机整数的新列表,您必须通过参数传递该数字,如下面的代码。
此外,您必须将 makelist
到 return 分配给 main 中的一个变量,这样您就可以使用 makelist
产生的任何输出。这可以简单地通过 var = makelist(random_int)
完成。我称这个变量为 elements
.
最后,有几个选项可以对列表进行排序。其中之一是使用 Python 的内置函数 sorted
并将最终列表作为参数传递。遍历它并打印每个值。
import random
def main():
random_int = random.randint(6, 12)
print (random_int)
elements = makelist(random_int)
for i in sorted(elements):
print (i,)
def makelist(random_int):
num_list = []
for count in range(random_int):
num_list.append(random.randint(1, 100))
return num_list
main()
如果您只是想要现有程序的更好版本,我已经修复了您的代码并将其压缩为下面的单个函数。但是,我认为编辑您已经编写的内容比重做更有建设性 - 有关修复代码的详细信息,请参阅我的其余答案。**
from random import randint
def main():
random_int = random.randint(6, 13)
print(random_int)
rand_list = [randint(1, 100) for _ in range(random_int)]
return sorted(rand_list)
print main()
In main, generate a random integer that is greater than 5 and less
than 13.
random_int
应分配给 random.randint(6, 12)
,因为 randint 函数使用包含范围参数
Call the makelist function with the random integer as sole argument.
- 您的
make_list
函数目前没有参数,所以让我们将其定义更改为 def make_list(list_lengh):
。现在我们可以传入 main()
中的随机整数作为输入。
use a loop to append to the list a number of elements equal to the random integer argument.
- 在
make_list function
的第二行代码中,您使用默认参数 (1, 101)
调用范围,这不是您想要的。你想在 list_length
上调用范围,因为你想循环的次数与在 main()
. 中创建的随机整数相同
All new list elements must be random integers ranging from 1 to 100,
inclusive.
- 你不想要
num_list.append(random_int)
。那只会给你 [random_int]*random_int
。而是附加 random.randint(1, 101)
.
Finally, use a for loop to display the sorted list elements, all on one line
- 有多种方法可以做到这一点,但由于您想将所有整数打印到一行,让我们将整数附加到带有循环的字符串,然后 return 处的字符串结束。
像这样:
num_string = ""
for i in sorted(rand_list):
num_string += str(i) + " "
return num_string
完成所有这些修改后,离开始的地方不远了,但代码现在具有所需的行为。
import random
def main():
random_int = random.randint(6, 13)
print(random_int)
rand_list = make_list(random_int)
num_string = ""
for i in sorted(rand_list):
num_string += str(i) + " "
return num_string
def make_list(list_length):
num_list = []
for count in range(list_length):
num_list.append(random.randint(1, 101))
return num_list
print main()
示例输出:
10
20 63 63 71 78 83 83 84 87 94
可能是:
import random
def makelist(i):
list_ = []
for c in range(i):
list_.append(random.randint(1, 100))
return list_
def main():
c = random.randint(5, 13)
print c
catched_list = makelist(c)
s = ' ' . join([str(x) for x in catched_list])
print s
main()
您遇到的问题主要是句法问题。
正在创建您的 random_int
变量,但它也保存在 main()
函数中。它需要向上传递到更大的命名空间,或者通过在定义函数之前创建变量,或者通过使用 global
这样:
def main():
global random_int = random.randint(5, 13)
您的 makelist()
函数需要将 random_int
作为定义中的声明变量 - 这是赋值的 'as an argument' 部分。看起来像:
def makelist(random_int):
您还需要将 for count in range()
行更改为 for count in random.randrange(1, 101)
。
import random
def main():
random_int = random.randint(6, 12)
print (random_int)
for i in sorted(makelist(random_int)):
print i,
def makelist(random_int):
num_list = []
for count in range(random_int):
rand=random.randint(1,100)
num_list.append(rand)
return num_list
main()
另一个解决方案:
from random import randint
def makelist(count):
return [randint(1, 100) for _ in range(count)]
def main():
random_integer = randint(6, 12) # Generate a random integer where 5 < i < 13
print(random_integer) # Print this integer on its own line
unsorted_list = makelist(count=random_integer) # Make a list
sorted_list = sorted(unsorted_list) # Sort the list
print(' ' . join([str(i) for i in sorted_list])) # Print it out
main()
最主要的是makelist
returns a list comprehension,这完全没有必要使用。这些答案你应该已经足够了解了。
David当然是对的。 makelist
不需要存在,尽管它确实为练习增加了一点可读性(并且可能是 "required," 正如 OP 指南所建议的那样)。您可以像这样轻松地一路走下去:
from random import randint
count = randint(6, 12)
print(count)
print(' ' . join([str(i) for i in sorted([randint(1, 100) for _ in range(count)])]))
这取决于你的兔子洞有多深。我当然不会把它交给教授...
这是最短最智能的代码:
import random
def main():
global random_int
random_int = random.randint(5, 13)
print random_int
makelist(random_int)
random_list.sort
string = ' ' . join([str(x) for x in random_list])
print string
def makelist(list_length):
global random_list
random_list = []
for x in range (list_length):
random_list.append(random.randint(0, 100))
main()
我对编程和像这样的网站还很陌生,实际上才刚刚开始 class。我了解 Python 的基础知识,这两天我一直在用头撞墙。
以下是程序的要求,紧随其后的是我对代码的尴尬尝试。我不是在寻找它给我,但我不知道如何前进。
- 在 main 中,生成一个大于 5 且小于 13 的随机
integer
。 - 将此数字打印在自己的行上。
- 以随机整数作为唯一参数调用 makelist 函数。
makelist
函数内部:创建一个空列表。
使用循环向列表追加等于随机整数参数的元素数。所有新的列表元素必须是 1 到 100(含)之间的随机整数。重复是可以的。
Return 主列表。
返回 main,捕获返回的列表并对其进行排序。
- 最后,使用
for
循环显示排序后的列表元素,全部在一行上, - 以单个空格分隔。
到目前为止的代码:
import random
def main():
random_int = random.randint(6, 12)
print (random_int)
makelist()
def makelist():
num_list = []
for count in range(1, 101)
num_list.append(random_int)
main()
你已经完成了大部分。
为了在 makelist
中创建一个长度等于您在 main() 中获得的随机整数的新列表,您必须通过参数传递该数字,如下面的代码。
此外,您必须将 makelist
到 return 分配给 main 中的一个变量,这样您就可以使用 makelist
产生的任何输出。这可以简单地通过 var = makelist(random_int)
完成。我称这个变量为 elements
.
最后,有几个选项可以对列表进行排序。其中之一是使用 Python 的内置函数 sorted
并将最终列表作为参数传递。遍历它并打印每个值。
import random
def main():
random_int = random.randint(6, 12)
print (random_int)
elements = makelist(random_int)
for i in sorted(elements):
print (i,)
def makelist(random_int):
num_list = []
for count in range(random_int):
num_list.append(random.randint(1, 100))
return num_list
main()
如果您只是想要现有程序的更好版本,我已经修复了您的代码并将其压缩为下面的单个函数。但是,我认为编辑您已经编写的内容比重做更有建设性 - 有关修复代码的详细信息,请参阅我的其余答案。**
from random import randint
def main():
random_int = random.randint(6, 13)
print(random_int)
rand_list = [randint(1, 100) for _ in range(random_int)]
return sorted(rand_list)
print main()
In main, generate a random integer that is greater than 5 and less than 13.
random_int
应分配给random.randint(6, 12)
,因为 randint 函数使用包含范围参数
Call the makelist function with the random integer as sole argument.
- 您的
make_list
函数目前没有参数,所以让我们将其定义更改为def make_list(list_lengh):
。现在我们可以传入main()
中的随机整数作为输入。
use a loop to append to the list a number of elements equal to the random integer argument.
- 在
make_list function
的第二行代码中,您使用默认参数(1, 101)
调用范围,这不是您想要的。你想在list_length
上调用范围,因为你想循环的次数与在main()
. 中创建的随机整数相同
All new list elements must be random integers ranging from 1 to 100, inclusive.
- 你不想要
num_list.append(random_int)
。那只会给你[random_int]*random_int
。而是附加random.randint(1, 101)
.
Finally, use a for loop to display the sorted list elements, all on one line
- 有多种方法可以做到这一点,但由于您想将所有整数打印到一行,让我们将整数附加到带有循环的字符串,然后 return 处的字符串结束。
像这样:
num_string = ""
for i in sorted(rand_list):
num_string += str(i) + " "
return num_string
完成所有这些修改后,离开始的地方不远了,但代码现在具有所需的行为。
import random
def main():
random_int = random.randint(6, 13)
print(random_int)
rand_list = make_list(random_int)
num_string = ""
for i in sorted(rand_list):
num_string += str(i) + " "
return num_string
def make_list(list_length):
num_list = []
for count in range(list_length):
num_list.append(random.randint(1, 101))
return num_list
print main()
示例输出:
10
20 63 63 71 78 83 83 84 87 94
可能是:
import random
def makelist(i):
list_ = []
for c in range(i):
list_.append(random.randint(1, 100))
return list_
def main():
c = random.randint(5, 13)
print c
catched_list = makelist(c)
s = ' ' . join([str(x) for x in catched_list])
print s
main()
您遇到的问题主要是句法问题。
正在创建您的 random_int
变量,但它也保存在 main()
函数中。它需要向上传递到更大的命名空间,或者通过在定义函数之前创建变量,或者通过使用 global
这样:
def main():
global random_int = random.randint(5, 13)
您的 makelist()
函数需要将 random_int
作为定义中的声明变量 - 这是赋值的 'as an argument' 部分。看起来像:
def makelist(random_int):
您还需要将 for count in range()
行更改为 for count in random.randrange(1, 101)
。
import random
def main():
random_int = random.randint(6, 12)
print (random_int)
for i in sorted(makelist(random_int)):
print i,
def makelist(random_int):
num_list = []
for count in range(random_int):
rand=random.randint(1,100)
num_list.append(rand)
return num_list
main()
另一个解决方案:
from random import randint
def makelist(count):
return [randint(1, 100) for _ in range(count)]
def main():
random_integer = randint(6, 12) # Generate a random integer where 5 < i < 13
print(random_integer) # Print this integer on its own line
unsorted_list = makelist(count=random_integer) # Make a list
sorted_list = sorted(unsorted_list) # Sort the list
print(' ' . join([str(i) for i in sorted_list])) # Print it out
main()
最主要的是makelist
returns a list comprehension,这完全没有必要使用。这些答案你应该已经足够了解了。
David当然是对的。 makelist
不需要存在,尽管它确实为练习增加了一点可读性(并且可能是 "required," 正如 OP 指南所建议的那样)。您可以像这样轻松地一路走下去:
from random import randint
count = randint(6, 12)
print(count)
print(' ' . join([str(i) for i in sorted([randint(1, 100) for _ in range(count)])]))
这取决于你的兔子洞有多深。我当然不会把它交给教授...
这是最短最智能的代码:
import random
def main():
global random_int
random_int = random.randint(5, 13)
print random_int
makelist(random_int)
random_list.sort
string = ' ' . join([str(x) for x in random_list])
print string
def makelist(list_length):
global random_list
random_list = []
for x in range (list_length):
random_list.append(random.randint(0, 100))
main()