运行 一个函数多次然后 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))
这是我的代码:
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))