Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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)

chris7522 a écrit :

   J'avais pensé a random.randint() ..., mais je n'ai rien trouvé dans mes recherches .

Bonjour,
Tu n'as pas dû beaucoup chercher roll

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é smile
  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,

chris7522 #3 a écrit :
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