Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exécution d'une fonction

    26 mai 2019 à 19:50:35

    Bonjour, quelqu'un peut bien me dire pourquoi ma dernière fonction ne s'applique pas quand j'execute ?

    Voici le code : 

    from numpy import *
    from matplotlib import *
    import matplotlib.pyplot as plt
    from random import random, choice
    import numpy as np
     
    p=0.6
    
    #Création de la foret : 
    def hasard (p):
        r = random ()
        assert p>=0 and p<=1
        return r<=p
    
    t = np.zeros((20, 20), dtype=int)
    
    for i in range (20):
        for j in range (20):
            if hasard (p):
                t[i,j]=1
            else :
                t[i,j]=0
    
    
    def mettreLeFeu(t):
        t[2,3]=2 
        t[3,6]=2
        t[9,10]=2
        t[15,2]=2
        t[14,7]=2
        t[7,9]=2
        t[8,2]=2
        t[16,7]=2
    mettreLeFeu(t)    
        
    def peutBruler(t, i, j):
        n, m = t.shape
        if t[i, j] == 1.:
            for y in range(max(0, i - 1), min(n, i + 2)):  # bord haut et bas
                if t[y, j] == 2.:
                    return True
            for x in range(max(0, j - 1), min(m, j + 2)):  # bord gauche et droit
                if t[i, x] == 2.:
                    return True
        return False
    
    def propageFeu(t):
        n,m=t.shape 
        for i in range(n):
            for j in range(m):
                if peutBruler(t,i,j): 
                    t[i,j]=2
        return t
    propageFeu (t) #Le feu s'est propagé pour chaque arbre qui est en contact avec un arbre en feu
    
    def cendre(t): #Va mettre un arbre en cendre si il est brûlé en deux étapes
        if mettreLeFeu==2:
            t[i,j]=3
        return t
    
    cendre(t)

    merci

    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2019 à 21:47:27

      ligne 57, tu fait un test d'égalité entre mettreLeFeu et 2. Sauf que mettrelefeu est une fonction, donc le condition sera toujours évaluée fausse, et la l58 ne sera donc pas exécutée.
      • Partager sur Facebook
      • Partager sur Twitter
        27 mai 2019 à 0:57:20

        __Nicolas__ a écrit:

        ligne 57, tu fait un test d'égalité entre mettreLeFeu et 2. Sauf que mettrelefeu est une fonction, donc le condition sera toujours évaluée fausse, et la l58 ne sera donc pas exécutée.


        ah d'accord et du coup comment je peux corriger ça en voulant dire que les 2 que j'ai déclaré deviennent des 3 ?
        • Partager sur Facebook
        • Partager sur Twitter

        Exécution d'une fonction

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown