Probleme python

Résolu/Fermé
elise - 2 nov. 2008 à 19:08
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 4 nov. 2008 à 13:44
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 mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 659
4 nov. 2008 à 13:44
En fait on peut même faire:
casechoisie=random.choice(toutes)
1
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
2 nov. 2008 à 20:25
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
2 nov. 2008 à 20:29
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
2 nov. 2008 à 21:24
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > elise
2 nov. 2008 à 23:11
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 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016
2 nov. 2008 à 23:41
merci bcp ça marche nikel
0