Probleme python

Résolu
elise -  
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je veux avoir toutes les cases possibles qui se rajoutent dans une liste mais je n'y arrrive pas. Voici mon code:

def toutecase(grille,animal):
x=0
toutes=()
while (x<20):
if grille[x]==animal:
case=x
toutes=toutes.extend(case)
x=x+1
print toutes

toutes est ma liste de départ et je veux que si ce qu'il y a dans ma case correspond a l'animal alors on le met dans la liste toutes.
Merci de m'aider

2 réponses

sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
En fait on peut même faire:
casechoisie=random.choice(toutes)
1
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Salut,
toutes=() 

Là tu as créé un tuple, pas une liste.
Les tuples ne sont pas modifiables, alors que les listes si.

Ensuite extend est fait pour fusionner deux listes. Tu as besoin de append:
def toutecase(grille,animal):
    x=0
    toutes=[]
    while (x<20):
        if grille[x]==animal:
            case=x
            toutes.append(case)
        x=x+1
    print toutes 
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Plus pythonnique:
def toutecase(grille,animal):
    toutes=[]
    for i in range(len(grille)):
        if grille[i]==animal:
            toutes.append(i)
    print toutes 
0
elise > kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention  
 
nikel merci maintenant, j'ai un autre souci car parmi la liste que j'obtiens, je veux en prendre un au hasard. Jusqu'ici tout va bien j'ai réussi mais le probleme c'est que je veux utiliser mon résultat en tant que entier or j'obtiens une liste.
Mon code:

def toutecase(grille,animal):
x=0
toutes=[]
while (x<20):
if grille[x]==animal:
case=x
toutes.append(case)
x=x+1
return toutes

def hasardcase(grille,animal,toutes):
casechoisie=random.sample(toutes, 1)
return casechoisie

casechoisie est une liste contenant un entier mais pour obtenir l'entier tout seul???
je fais une fonction du type:
[x]=casechoisie
entier=x

Si tu as la patience de m'aider. Merci
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > elise
 
Utilise random.randrange, ça permet de prendre un nombre au hazard entre 0 et le nombre donné:
def hasardcase(toutes):
    casechoisie=random.randrange(len(toutes))
    return toutes[casechoisie] 
0
elise > kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention  
 
merci bcp ça marche nikel
0