我对编程和这样的网站都很陌生,实际上我刚开始上课。我理解Python的基础知识,现在已经用两天时间撞到了墙上。
以下是我之后对代码进行尴尬尝试所遵循的程序要求。我不是想把它交给我,但我无法弄清楚如何前进。
integer
。 makelist
函数内部:
制作一个空列表。
使用循环在列表中附加一些等于随机整数参数的元素。所有新的列表元素必须是1到100之间的随机整数,包括1和100。重复是可以的。
将列表返回主页。
返回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()
答案 0 :(得分:2)
另一种解决方案:
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
会返回list comprehension,这完全没有必要使用。你应该对所有这些答案都做得足够清楚。
David是对的。 makelist
不需要存在,但它确实可以为练习添加一些可读性(并且可能是&#34;必需的,&#34;正如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)])]))
这取决于你的兔子洞的深度。我当然不会把它转交给教授......
答案 1 :(得分:1)
你已经完成了大部分工作。
为了在makelist
中创建一个长度等于你在main()中获得的随机int的新列表,你必须通过参数传递该数字,如下面的代码。
此外,您必须指定makelist
以返回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()
答案 2 :(得分:1)
如果您只想要更好的现有程序版本,我已修复您的代码并将其压缩到下面的单个函数中。但是,我认为编辑已经编写的内容而不是重做它更具建设性 - 请参阅我的其余部分以获取有关修复代码的详细信息。**
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()
在main中,生成一个大于5且小于的随机整数 比13岁。
random_int
应分配给random.randint(6, 12)
,因为randint函数使用包含范围参数使用随机整数作为唯一参数调用makelist函数。
make_list
函数目前不带参数,所以我们将它的定义更改为def make_list(list_lengh):
。现在我们可以传递来自main()
的随机整数作为输入。使用循环向列表附加一些等于随机整数参数的元素。
make_list function
的第二行代码中,您使用默认参数(1, 101)
调用范围,这不是您想要的。您希望在list_length
上调用范围,因为您希望循环与main()
中创建的随机整数相同的次数。所有新的列表元素必须是1到100之间的随机整数, 包容。
num_list.append(random_int)
。这只会给你[random_int]*random_int
。而是追加random.randint(1, 101)
。最后,使用for循环显示已排序的列表元素,全部在一行
像这样:
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
答案 3 :(得分:0)
可能是:
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()
答案 4 :(得分:0)
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()
答案 5 :(得分:0)
这是最简短,最智能的代码:
{{1}}
答案 6 :(得分:-1)
您遇到的问题主要是语法问题。
正在创建random_int
变量,但它也保留在main()
函数中。它需要通过在定义函数之前创建变量或者使用global
来传递到更大的命名空间:
def main():
global random_int = random.randint(5, 13)
您的makelist()
函数需要random_int
作为定义中的声明变量 - 这是赋值的'作为参数'部分。它看起来像:
def makelist(random_int):
您还需要将for count in range()
行更改为for count in random.randrange(1, 101)
。