#1 Le 13/01/2022, à 10:56
- chris7522
[RESOLU]random.randint sur une liste de tuple ? (python)
Bonjour a toutes et a tous ,
Je souhaiterai savoir s'il est possible de selectionner de facon aleatoire un tuple contenu dans une liste :
Voici ma liste :
l = [ (30,60),
(30,120),
(30,180),
(180,210),
(390,180),
(130,180),
(30,330),
(30,390),
(480,390),
(240,450),
(180,510),
(60,570),
(30,660),
(390,630),
(30,720)
]
Et ensuite recuperer les 2 nombres dans un self.rect.x , self.rect.y .
J'avais pensé a random.randint() ..., mais je n'ai rien trouvé dans mes recherches .
Merci de votre aide .
Dernière modification par chris7522 (Le 13/01/2022, à 14:07)
Hors ligne
#2 Le 13/01/2022, à 11:18
- Compte supprimé
Re : [RESOLU]random.randint sur une liste de tuple ? (python)
J'avais pensé a random.randint() ..., mais je n'ai rien trouvé dans mes recherches .
Bonjour,
Tu n'as pas dû beaucoup chercher
x, y = random.choice(l)
#3 Le 13/01/2022, à 11:34
- chris7522
Re : [RESOLU]random.randint sur une liste de tuple ? (python)
Si si !
J'essaie d'etre moins fainéant qu'auparavant et de faire quelques recherches avant de succomber a la facilité
Pour reprendre l'ensemble de ma classe , j'avais fait ca :
class Monstres(pygame.sprite.Sprite):
def __init__(self,personnage=None):
pygame.sprite.Sprite.__init__(self)
self.perso = personnage
self.image = pygame.image.load("PERSONNAGE.png").convert_alpha()
self.rect = self.image.get_rect()
self.rect.y = random.randint(0,TUILE_NOMBRE -1) * TUILE_TAILLE + SCORE_HAUTEUR
self.rect.x = random.randint(0,TUILE_NOMBRE - 1) * TUILE_TAILLE
def update(self):
l = list()
LISTE_COLLISION_MUR = pygame.sprite.spritecollide(self, LISTE_MURS, False)
self.rect.x += DEPLACEMENT
if len(LISTE_COLLISION_MUR) > 0:
l = [ (30,60),
(30,120),
(30,180),
(180,210),
(390,180),
(130,180),
(30,330),
(30,390),
(480,390),
(240,450),
(180,510),
(60,570),
(30,660),
(390,630),
(30,720)
]
self.rect.x,self.rect.y= random.randint(l)
J'ai ce message d'erreur :
Traceback (most recent call last):
File "/home/chris/PycharmProjects/labyrinthe/main.py", line 84, in <module>
LISTE_GLOBALE_SPRITES.update()
File "/home/chris/PycharmProjects/labyrinthe/venv/lib/python3.8/site-packages/pygame/sprite.py", line 539, in update
sprite.update(*args, **kwargs)
File "/home/chris/PycharmProjects/labyrinthe/CLASSES.py", line 107, in update
self.rect.x,self.rect.y= random.randint(l)
TypeError: randint() missing 1 required positional argument: 'b'
C'est parti...
Process finished with exit code 1
Dernière modification par chris7522 (Le 13/01/2022, à 11:37)
Hors ligne
#4 Le 13/01/2022, à 11:51
- pingouinux
Re : [RESOLU]random.randint sur une liste de tuple ? (python)
Bonjour,
TypeError: randint() missing 1 required positional argument: 'b'
Ton message d'erreur te donne la solution.
$ pydoc3 random.randint
Help on method randint in random:
random.randint = randint(a, b) method of random.Random instance
Return random integer in range [a, b], including both end points.
Hors ligne
#5 Le 13/01/2022, à 12:05
- Compte supprimé
Re : [RESOLU]random.randint sur une liste de tuple ? (python)
... et comme dit dans mon premier message pour choisir un élément de ta liste (donc dans ton cas un tupple) aléatoirement il te faut utiliser random.choice(l).
#6 Le 13/01/2022, à 14:07
- chris7522
Re : [RESOLU]random.randint sur une liste de tuple ? (python)
Merci de votre aide a tous les deux .
J'ai bien compris vos explications et resolu mon petit probleme .
Hors ligne