CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] Besoin d'aide rapide ^^

aquaqua9877
aquaqua9877
Niveau 9
12 avril 2016 à 20:24:06

Bonjour,

En license actuellement, avec un ami, nous bloquons sur cette question :

On veut placer aléatoirement un certain nombre de tuiles dans cette grille.
On part d'une liste de tuiles listeT . Une tuile sera représentée par une string. Chaque
tuile est alors positionnée 4 fois aléatoirement dans la grille. Plusieurs tuiles peuvent
être dans une même case.
Les cases contiendront donc soit '_' quand il n'y a pas de tuile dans la case soit la liste
des tuiles (une liste à un ou à plusieurs éléments) qui sont dans cette case.
Écrire la fonction aleagrille(n,p, listeT) qui crée une grille de taille n, p puis place
aléatoirement 4 tuiles de chaque sorte de la liste listeT dans la grille et renvoie la grille
ainsi obtenue.
Exemple

listeS=['$', '*', '&', '#', '+', '£', '?']
mon_ex=aleaGrille(4,5,listeS)
mon_ex

[[['$', '#'], ['£'], ['*', '&', '?'], '_', ['#']], ['_', '_', ['£'], ['$', '#', '*'], ['&', '£', '+']], [['$', '+', '&'], ['?'], ['£'], ['?'], '_'],

[['*', '#', '$'], ['+', '?'], ['*', '+'], '_', ['&']]]
Voila notre réponse (partielle):

listeS=['$', '*', '&', '#', '+', '£', '?']

def aleaGrille(n,p,listeS):
ListeMaj=[]
q=0
while q<=3:
n=random.sample(listeS,len(listeS))
ListeMaj.append(n)
q=q+1
return ListeMaj

si quelqu'un a la réponse ou un élément de réponse, merci de me le faire savoir .

Bisouille ^^

Ketchup_returns
Ketchup_returns
Niveau 10
13 avril 2016 à 13:39:53
def aleaGrille(n,p,listeS):
    tuiles_a_placer = []
    liste = []
    for tuile in listeS:
        tuiles_a_placer.extend([tuile] * 4)
    for i in range(n):
        liste.append([])
        for j in range(p):
            tuile = random.randint(0, len(tuiles_a_placer))
            liste[-1].append(tuiles_a_placer[tuile])
            tuiles_a_placer.pop(tuile)
    return liste

On peut probablement faire mieux, mais c'est déjà ça.

aquaqua9877
aquaqua9877
Niveau 9
13 avril 2016 à 20:50:16

Il y a une erreur selon la console a cette ligne :
liste[-1].append(tuiles_a_placer[tuile])

Merci beaucoup pour taréponse

Runnymede
Runnymede
Niveau 10
13 avril 2016 à 20:57:45

Le 13 avril 2016 à 13:39:53 Ketchup_returns a écrit :
def aleaGrille(n,p,listeS): tuiles_a_placer = [] liste = [] for tuile in listeS: tuiles_a_placer.extend([tuile] * 4) for i in range(n): liste.append([]) for j in range(p): tuile = random.randint(0, len(tuiles_a_placer)) liste[-1].append(tuiles_a_placer[tuile]) tuiles_a_placer.pop(tuile) return liste

On peut probablement faire mieux, mais c'est déjà ça.

pourquoi tu donnes du code tout fait comme ça ? C'est pas en faisant le travail à la place des autres et en copiant/collant un code fait par un autre qu'on apprend de ses erreurs

aquaqua9877
aquaqua9877
Niveau 9
13 avril 2016 à 20:58:55

le truc c'est que sa fait maintenant 4 jours que nous sommes bloqués et la date butir approche. Don cje le remercie de me donner la réponse (même si elle ne fonctionne pas)

Ketchup_returns
Ketchup_returns
Niveau 10
13 avril 2016 à 21:39:54

Envoie l'erreur. :hap:

Le 13 avril 2016 à 20:57:45 Runnymede a écrit :
pourquoi tu donnes du code tout fait comme ça ? C'est pas en faisant le travail à la place des autres et en copiant/collant un code fait par un autre qu'on apprend de ses erreurs

Parce que ça me prend 30 secondes et qu'il a pas l'air d'avoir trop le temps de la trouver par lui même.

aquaqua9877
aquaqua9877
Niveau 9
13 avril 2016 à 21:41:22

Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
aleaGrille(10,9,listeS)
File "E:\Mah-Jong.py", line 44, in aleaGrille
liste[-1].append(tuiles_a_placer[tuile])
IndexError: list index out of range

Encore milles merci pour l'aide apportée

Ketchup_returns
Ketchup_returns
Niveau 10
13 avril 2016 à 22:08:17

Logique en fait, puisque, ça continue à boucler même si t'as plus de tuiles à placer.
En fait ce qui c'est passé c'est que j'ai lu ton sujet trop vite et c'est beaucoup plus simple que ça.

import random
def aleaGrille(n,p,listeS):
    tuiles_a_placer = []
    liste = [['_' for i in range(n)] for j in range(p)]
    for tuile in listeS:
        tuiles_a_placer.extend([tuile] * 4)
    while len(tuiles_a_placer) > 0:
        i, j = random.randint(0,n-1), random.randint(0,p-1) 
        tuile = random.randint(0, len(tuiles_a_placer)-1)
        if liste[i][j] == '_':
            liste[i][j] = tuiles_a_placer[tuile]
            tuiles_a_placer.pop(tuile)    
    return liste

ça, ça répond à ton sujet. Attention cependant, si (n * p) est inférieur à ton nombre de tuiles * 4, la fonction tournera à l'infini. Donc à toi de mettre une condition au tout début de ta fonction, si tu veux lancer une exception ou bien tout simplement changer n et p.

aquaqua9877
aquaqua9877
Niveau 9
14 avril 2016 à 20:03:43

souvent on a un nombre dr uile inférieur ^^ mais merci beaucoup

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment