根据输入向列表添加迭代


早上好

我想知道是否有人能给我指个方向。

我正在尝试循环遍历列表并将它们添加到可打印列表中。

假设用户输入数字2:然后它应该打印出列表的两个随机类名。如果用户输入4,它应该从列表中随机取出4个类名。

这样我就可以根据上面的类名从类中打印出属性。utskrift1 = (var(飞机))

我已经尝试了正常的循环,但它似乎打印出整个列表,如果我去打印x=2,那么它打印整个列表两次。

#类:

import random
class plane:
def __init__(self, dyr, dyrefamilie, antallbein):
self.dyr = 'Hund'
self.dyrefamilie = 'Hundefamilien'
self.antallbein = '4'
def __str__(self):
return f'undulat(={self.dyr},{self.dyrefamilie},{self.antallbein})'       
plane2 = plane(dyr='something', dyrefamilie="something", antallbein='4')
class rocket:
def __init__(self, dyr, dyrefamilie, antallbein):
self.dyr = 'something'
self.dyrefamilie = 'something2'
self.antallbein = '4'
def __str__(self):
return f'katt(={self.dyr},{self.dyrefamilie},{self.antallbein})'
rocket2 = rocket(dyr='something', dyrefamilie="something", antallbein='4')
class boat:
def __init__(self, dyr, dyrefamilie, antallbein):
self.dyr = 'something'
self.dyrefamilie = 'something2'
self.antallbein = '5'
def __str__(self):
return f'undulat(={self.dyr},{self.dyrefamilie},{self.antallbein})'
boat2 = boat(dyr='something', dyrefamilie="something", antallbein='2')

是否有可能随机选择并拥有列表。追加(选定的随机名称)而不是像我下面所做的那样预先选择它?

x2=list = []
x1=list = []
# appending instances to list
list.append(plane(1,2,3))
list.append(rocket(1,2,3))
list.append(boat(1,2,3))


random.shuffle(x1) #roterer litt rundt på listen
for i, x1 in enumerate(x1): #kode fra canvas
print('Dyret er en', x1.dyr,'med',x1.antallbein+'-bein'+'.','denne er er en del av',   x1.dyrefamilie)

使用随机std包,只需将实例化的对象放在列表中,您可以选择一个随机的对象,如:

from random
values = [1,2,3,4,5,6]
rand_val = random.choice(values)

您可以执行一个range for,这意味着for将执行x次(range(x))。通过这种方式,现在你有一个执行X次的a,你可以在列表中索引,例如,当前迭代'i'并打印其对象属性。

你必须注意范围(x)和你正在索引的列表/数组的范围,如果范围(x)>范围(列表),那么你将有超出界限的错误。

x2=list = []
x1=list = []
# appending instances to list
list.append(plane(1,2,3))
list.append(rocket(1,2,3))
list.append(boat(1,2,3))
random.shuffle(x1) #roterer litt rundt på listen

for i in range(2):
print('Dyret er en', x1[i].dyr,'med',x1[i].antallbein+'-bein'+'.','denne er er en del av',   x1[i].dyrefamilie)

谢谢,现在工作了。使用了向我解释的两种解决方案,并编写了以下代码:

num = int(input("Skriv inn antallet du vil generere"))
x1=list = []
# appending instances to list
values = [plane,rocket,boat]
for i in range(num):
list.append(random.choice(values)(1,2,3))

最新更新