【发布时间】:2019-05-03 12:14:10
【问题描述】:
这是我的代码:
import random
def name_generator():
for x in range (0, 11):
color = ["Red", "Green", "Blue", "White", "Black", "Yellow", "Purple", "Orange", "Pink"]
animal = ["Cat", "Dog", "Snake", "Mouse", "Tiger", "Leopard", "Moose", "Wolf", "Bear"]
number = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]
randomColor = random.randrange(0, len(color))
randomAnimal = random.randrange(0, len(animal))
randomNumber = random.randrange(0, len(number))
name = "Username: " + color[randomColor] + animal[randomAnimal] + number[randomNumber]
return name
我正在尝试生成十个不同的名称,然后打印所有不同的名称。现在,当我运行该函数时,我只会返回一个名称,而不是十个不同的名称。
for x in range (0, 11)
据我所知,这应该执行十次?
这是我现在得到的结果:
name_generator()
'Username: PurpleLeopard13'
但我想得到:
name_generator()
'Username: PurpleLeopard13'
'Username: GreenDog10'
'Username: PurpleCat1'...(10 times)
谢谢!
【问题讨论】:
-
你调用你的函数
name_generator...你真的想创建一个可以循环的生成器函数吗?如果是这样,您可能想要yield而不是return- 或者作为答案意义并调用它10次...... -
附带说明 - 用于选择单个元素 - 而不是
random.randrange(0, len(whatever))并使用它来索引到whatever... 你可以只使用random_color = random.choice(color)然后random_color将是列表中的一种颜色...更清晰、更简单。 -
我同意@JonClements。要么把它变成一个实际的生成器并产生结果,要么制作一个内部列表,将结果附加到循环中的列表中,然后返回最终列表。这取决于您的需求。
标签: python function loops names