运行 一个函数多次然后 return 所有不同的结果?

Run a function multiple times and then return all the different results?

这是我的代码:

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)

谢谢!

问题是目前您已将 return 语句放在 for 循环中。因此,一旦您生成了名字,您就 return 并离开该函数。

您需要稍作修改:将函数调用移到 for 循环中。或者,在下面的评论中遵循@Jon Clements 的建议。

import random
def name_generator():
        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):    
    print (name_generator())

# Username: PinkMouse3
# Username: GreenCat8
# Username: GreenMoose2
# Username: BlackTiger14
# Username: BlackSnake11
# Username: PurpleMoose13
# Username: GreenMouse2
# Username: RedBear5
# Username: BlueBear2
# Username: WhiteDog2
# Username: WhiteTiger3

试试下面的代码。在 for 循环中尝试使用 print 而不是 return。您的 return 阻止循环进一步交互。

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]

        print(name)

name_generator()

作为生成器使用的附加重复,使您的生成器能够提供任意 个名称。用户可以决定同时检索多少个名字。

from random import choice
from itertools import islice

def name_generator():
    colors = ["Red", "Green", "Blue", "White", "Black", "Yellow", "Purple", "Orange", "Pink"]
    animals = ["Cat", "Dog", "Snake", "Mouse", "Tiger", "Leopard", "Moose", "Wolf", "Bear"]
    numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"]

    while True:
        yield "Username: {}{}{}".format(
           choice(colors),
           choice(animals),
           choice(numbers)
        )


names = list(islice(name_generator(), 10))