如何使用变量生成for循环?
How to generate a for loop using variables?
我最近开始学习 python,我想通过使用循环变得更有知识和更灵活。
我的问题是,假设我创建了一个姓名列表:
names = ('Benjamin', 'Damien', 'Dexter', 'Jack', 'lucas', 'Norman', 'Thorn', 'Bella', 'Blair',
'Ivy', 'Lilth', 'Megan', 'Rue', 'Sabrina', 'Samara',
'Anthea', 'Jessica', 'Igor', 'Luther', 'Boris', 'Abel', )
现在我想使用 for
循环或 while
循环(我不知道哪个最好,但根据我的新手经验,我觉得 for
循环会工作得更好,但我找不到解决方案)来生成随机数并使我的循环生成该数量的名称。
这是我的代码,但它不起作用。
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
for l in range(people_count):
generate_random_names = random.choice(names)
print (generate_random_names)
而且我只得到一个随机名称。这里的 missing/mistake 是什么?
提前致谢!
您总是分配给同一个变量,所以每次迭代都会覆盖同一个变量,结果是上次迭代的字符串。
要实现您想要的效果,您必须将随机名称字符串添加到 for 循环内的某种列表或数组中
您在循环中为变量赋值 "n" 次,因此当您打印时,将返回最后赋值的值。
您需要做的是像这样存储这些随机名称:
import random
names = ('Benjamin', 'Damien', 'Dexter', 'Jack', 'lucas', 'Norman', 'Thorn', 'Bella', 'Blair',
'Ivy', 'Lilth', 'Megan', 'Rue', 'Sabrina', 'Samara',
'Anthea', 'Jessica', 'Igor', 'Luther', 'Boris', 'Abel', )
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names_list = []
for l in range(people_count):
generate_random_names_list.append(random.choice(names))
print(generate_random_names_list)
对于输入 3,结果如下:
['Norman', 'Rue', 'Rue']
要仅获取列表中唯一的名称,您可以这样做:
import random
names = ('Benjamin', 'Damien', 'Dexter', 'Jack', 'lucas', 'Norman', 'Thorn', 'Bella', 'Blair',
'Ivy', 'Lilth', 'Megan', 'Rue', 'Sabrina', 'Samara',
'Anthea', 'Jessica', 'Igor', 'Luther', 'Boris', 'Abel', )
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names_list = []
while len(generate_random_names_list) < people_count :
choice = random.choice(names)
if choice not in generate_random_names_list :
generate_random_names_list.append(choice)
print(generate_random_names_list)
对于 10 作为输入,这将导致这样的结果:
['Boris', 'Lilth', 'Jack', 'Igor', 'Luther', 'lucas', 'Damien', 'Rue', 'Abel', 'Blair']
在 for 循环中,每次循环迭代时都会替换变量 generate_random_names
。相反,也许将它们放入列表中。注意 choice()
会给你重复的值,如果这是你想要的。
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names = []
for l in range(people_count):
generate_random_names.append(random.choice(names))
print (generate_random_names)
现在您将得到一个姓名列表
此外,您不需要 for 循环来执行您想要的操作,您可以使用 list comprehension:
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names = [random.choice(names) for _ in range(people_count)]
哎呀,如果你不想在新列表中有重复的值,你可以使用 sample 它需要一个集合来选择以及你想要在新列表中有多少。
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names = random.sample(names,people_count)
print(generate_random_names)
您正在寻找random.sample
:
from random import sample
names = ('Benjamin', 'Damien', 'Dexter', 'Jack', 'lucas', 'Norman', 'Thorn', 'Bella', 'Blair',
'Ivy', 'Lilth', 'Megan', 'Rue', 'Sabrina', 'Samara',
'Anthea', 'Jessica', 'Igor', 'Luther', 'Boris', 'Abel')
print(sample(names, k=4))
# ['lucas', 'Ivy', 'Dexter', 'Abel']
其中 k
参数是您想要的元素数量,因此 select。
random.choice
将始终 select 只有一个元素。
我会使用随机库
然后我会做 dandom.randint(x,y) 这样你就会 return 从 x 到 y 的随机数。然后您可以使用
访问您的名单
name_list[random.randint(0,len(name_list)]
对了,你有一个随机的名字,现在你需要把这个值保存在另一个列表中
通过变量=name_list[随机...
你可以在 var 中写名字,但每次你这样做都会被覆盖
所以...
v=[]
v.append(name_list[random.randint(0,len(name_list)]
对吧?有任何疑问随时提问
我最近开始学习 python,我想通过使用循环变得更有知识和更灵活。
我的问题是,假设我创建了一个姓名列表:
names = ('Benjamin', 'Damien', 'Dexter', 'Jack', 'lucas', 'Norman', 'Thorn', 'Bella', 'Blair',
'Ivy', 'Lilth', 'Megan', 'Rue', 'Sabrina', 'Samara',
'Anthea', 'Jessica', 'Igor', 'Luther', 'Boris', 'Abel', )
现在我想使用 for
循环或 while
循环(我不知道哪个最好,但根据我的新手经验,我觉得 for
循环会工作得更好,但我找不到解决方案)来生成随机数并使我的循环生成该数量的名称。
这是我的代码,但它不起作用。
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
for l in range(people_count):
generate_random_names = random.choice(names)
print (generate_random_names)
而且我只得到一个随机名称。这里的 missing/mistake 是什么?
提前致谢!
您总是分配给同一个变量,所以每次迭代都会覆盖同一个变量,结果是上次迭代的字符串。
要实现您想要的效果,您必须将随机名称字符串添加到 for 循环内的某种列表或数组中
您在循环中为变量赋值 "n" 次,因此当您打印时,将返回最后赋值的值。
您需要做的是像这样存储这些随机名称:
import random
names = ('Benjamin', 'Damien', 'Dexter', 'Jack', 'lucas', 'Norman', 'Thorn', 'Bella', 'Blair',
'Ivy', 'Lilth', 'Megan', 'Rue', 'Sabrina', 'Samara',
'Anthea', 'Jessica', 'Igor', 'Luther', 'Boris', 'Abel', )
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names_list = []
for l in range(people_count):
generate_random_names_list.append(random.choice(names))
print(generate_random_names_list)
对于输入 3,结果如下:
['Norman', 'Rue', 'Rue']
要仅获取列表中唯一的名称,您可以这样做:
import random
names = ('Benjamin', 'Damien', 'Dexter', 'Jack', 'lucas', 'Norman', 'Thorn', 'Bella', 'Blair',
'Ivy', 'Lilth', 'Megan', 'Rue', 'Sabrina', 'Samara',
'Anthea', 'Jessica', 'Igor', 'Luther', 'Boris', 'Abel', )
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names_list = []
while len(generate_random_names_list) < people_count :
choice = random.choice(names)
if choice not in generate_random_names_list :
generate_random_names_list.append(choice)
print(generate_random_names_list)
对于 10 作为输入,这将导致这样的结果:
['Boris', 'Lilth', 'Jack', 'Igor', 'Luther', 'lucas', 'Damien', 'Rue', 'Abel', 'Blair']
在 for 循环中,每次循环迭代时都会替换变量 generate_random_names
。相反,也许将它们放入列表中。注意 choice()
会给你重复的值,如果这是你想要的。
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names = []
for l in range(people_count):
generate_random_names.append(random.choice(names))
print (generate_random_names)
现在您将得到一个姓名列表
此外,您不需要 for 循环来执行您想要的操作,您可以使用 list comprehension:
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names = [random.choice(names) for _ in range(people_count)]
哎呀,如果你不想在新列表中有重复的值,你可以使用 sample 它需要一个集合来选择以及你想要在新列表中有多少。
people_count = int(input("Enter how many names you wish to have, min 0, max 20: "))
generate_random_names = random.sample(names,people_count)
print(generate_random_names)
您正在寻找random.sample
:
from random import sample
names = ('Benjamin', 'Damien', 'Dexter', 'Jack', 'lucas', 'Norman', 'Thorn', 'Bella', 'Blair',
'Ivy', 'Lilth', 'Megan', 'Rue', 'Sabrina', 'Samara',
'Anthea', 'Jessica', 'Igor', 'Luther', 'Boris', 'Abel')
print(sample(names, k=4))
# ['lucas', 'Ivy', 'Dexter', 'Abel']
其中 k
参数是您想要的元素数量,因此 select。
random.choice
将始终 select 只有一个元素。
我会使用随机库 然后我会做 dandom.randint(x,y) 这样你就会 return 从 x 到 y 的随机数。然后您可以使用
访问您的名单name_list[random.randint(0,len(name_list)] 对了,你有一个随机的名字,现在你需要把这个值保存在另一个列表中
通过变量=name_list[随机... 你可以在 var 中写名字,但每次你这样做都会被覆盖 所以... v=[] v.append(name_list[random.randint(0,len(name_list)]
对吧?有任何疑问随时提问