Cum se obține un șir aleatoriu dintr-o listă (Programare, Python, Lista, Random)

Maxy Picky a intrebat.

Clasa mea a fost recent introdusă în liste și sarcina noastră este de a obține aleatoriu un nume din lista respectivă, Acesta este codul pe care l-am generat

import random
Random1 = random.randint(0,7)
Class_List = ['Noah','Simone','Ji Ho','Thanh','Nathanial','Soo','Mickel','Tuan','Thuy Linh']
print (ClassList[{}].format(Random1))

Cu toate acestea, primesc această eroare

Traceback (most recent call last):
  File "C:/Users/Mickel/Documents/Python/RPS Tournament/Rock Paper Sissor Tornament.py", line 4, in <module>
    print (ClassList[{}].format(Random1))
TypeError: list indices must be integers, not dict

Vreo soluție?

Comentarii

  • Votez pentru a închide această întrebare ca fiind off-topic, deoarece arată un efort minim –  > Por poolie.
3 răspunsuri
Martin Konecny

Python are o metodă foarte simplă pentru acest lucru: random.choice

import random

class_list = ['Noah','Simone','Ji Ho','Thanh','Nathanial','Soo','Mickel','Tuan','Thuy Linh']
print(random.choice(class_list))

În ceea ce privește motivul pentru care răspunsul dvs. nu funcționează:

print (ClassList[{}].format(Random1))

.format este pentru interpolarea unei valori într-un șir de caractere – de exemplu"{}".format(5). Evident, acest lucru este ceva diferit de ceea ce faci tu. Dacă doriți să folosiți în continuare abordarea dvs., iată cum:

Class_List = ['Noah','Simone','JiHo','Thanh','Nathanial','Soo','Mickel','Tuan','Thuy Linh']
Random1 = random.randint(0,len(Class_List))
print (ClassList[Random1])

Comentarii

  • Ar trebui să fiu random.randint(0, len(...) - 1). Randint „returnează un număr întreg aleatoriu N astfel încât a <= N <= b.” Adică incluzând atât valorile min cât și max. –  > Por Benedikt.
wim

Utilizați random.choice pentru acest lucru. Citiți documentația pe care am linkat-o.

Alex Ivanov

Tipăriți o valoare din listă sub forma unui dicționar gol în locul unui număr de index. De aceea primești o eroare. Dar oricum ai scris greșit. Ar trebui să fie „Class_List”, nu „ClassList”.

În ceea ce privește căutarea ta, personal aș face în felul următor

#!/usr/bin/python

import random

Class_List = ['Noah','Simone','Ji Ho','Thanh','Nathanial','Soo','Mickel','Tuan','Thuy Linh']

random.shuffle(Class_List)

print (Class_List[0])