IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Erreur de type


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Erreur de type
    J'ai executé un programme intitulé taquin et ce message a surgit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: object of type 'int'  has no len()
    et la partie du code interessé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell,cols=divmod(n, size), cols[n% len(cols)]
    le code du programme complet est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    from Tkinter import *
    from random import shuffle
     
    # ------------------------------------------------------------------------------
    def cb_button(flag):
     
            """fonction de rappel pour le "SHUFFLE" et le bouton 'RESET' """
            global hole,size
            cols, hole = (int(dim *(dim+1)/2)) * range(4), (dim, dim)
            if flag: shuffle(cols) # mélanger les couleurs si ' Shuffle' a été pressé
            for n in range(int(size*size)):
               cell, cols = divmod(n, size), cols[n % len(cols)]
               root[cell]['relief'], root[cell]['bg'] = RAISED, colors[col]
               root[hole]['relief'], root[hole]['bg'] = SUNKEN, colors[4]
    # ------------------------------------------------------------------------------
    def cb_cell(cell):
     
         """fonction de rappel pour chaque cellule de la carte"""
         global hole
         p, q = cell[0] - hole[0], cell[1] - hole[1]
         if not (p or q) or (p and q): return # ne peut pas glisser cellule courante
         if p: #glissière horizontale
            dp, q = p / abs(p), hole[1]
            for p in range(hole[0], cell[0], dp):
                root[p,q]['relief'], root[p,q]['bg'] = RAISED, root[p+dp,q]['bg']
         else: # glissière verticale
            dq, p = q / abs(q), hole[0]
            for q in range(hole[1], cell[1], dq):
                root[p,q]['relief'], root[p,q]['bg'] = RAISED, root[p,q+dq]['bg']
         hole = cell; root[hole]['relief'], root[hole]['bg'] = SUNKEN, colors[4]
    # ------------------------------------------------------------------------------
    def main():
         """programme principal du module 'slide' """
         global root, dim, size, hole, colors
         root, dim, fnt = {0: Tk()}, 2, 'Arial 12'
         size, colors = 2*dim+1, ('#f00','#0f0','#00f','#ff0','#fff')
    # ----------------------------------------------------------------------------
         root[1] = Frame(root[0])
         root[1].pack(side=TOP, fill=BOTH, padx=5, pady=5)
         root[11] = Button(root[1], font=fnt, width=8, text='SHUFFLE',
    command=lambda: cb_button(True))
         root[11].pack(side=LEFT, fill=BOTH, expand=YES)
         root[12] = Button(root[1], font=fnt, width=8, text='RESET',
    command=lambda: cb_button(False))
         root[12].pack(side=LEFT, fill=BOTH, expand=YES)
    # ----------------------------------------------------------------------------
         root[2] = Frame(root[0])
         root[2].pack(side=TOP, fill=BOTH, expand=YES, padx=5, pady=5)
         for n in range(size*size):
            c = divmod(n, size)
            root[c] = Label(root[2], font=fnt, width=6, height=3, relief=RAISED)
            root[c].bind('<Button-1>', lambda event, cell=c: cb_cell(cell))
            root[c].grid(column=c[0], row=c[1], sticky=N+E+W+S)
         for n in range(size): root[2].columnconfigure(n, weight=1)
         for n in range(size): root[2].rowconfigure(n, weight=1)
         root[12].invoke() # configuration grille initiale en invoquant 'reset' Bouton
    # ----------------------------------------------------------------------------
         root[0].title('SLIDE'); root[0].protocol('WM_DELETE_WINDOW', root[0].quit)
         root[0].update_idletasks(); root[0].resizable(1,1);
         root[0].minsize(root[0].winfo_width(), root[0].winfo_height())
         root[0].mainloop(); root[0].destroy()
    # ------------------------------------------------------------------------------
    if __name__ == '__main__':
       main()

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2014
    Messages : 25
    Points : 39
    Points
    39
    Par défaut
    Bonjour

    Moi j ai l'erreur suivante qui est normal , et aimerais plus d'explications pour une meilleure aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "/usr/lib/python3.4/tkinter/__init__.py", line 1536, in __call__
        return self.func(*args)
      File "/home/sphinx/PycharmProjects/test_python/_scip.py", line 44, in <lambda>
        command=lambda: cb_button(False))
      File "/home/sphinx/PycharmProjects/test_python/_scip.py", line 9, in cb_button
        cols, hole = (int(dim *(dim+1)/2)) * range(4), (dim, dim)
    TypeError: unsupported operand type(s) for *: 'int' and 'range'

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par ROWLINX Voir le message
    Bonjour

    Il suffit d'enlever int et range car leur utilisation ne se fait pas de cette maniere:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        cols, hole = ((dim *(dim+1)/2)) , (dim, dim)
    Ainsi j'ai aussi modifier la division reelle en division entiere dans le code au niveau de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            dp, q = p // abs(p), hole[1]
            for p in range(hole[0], cell[0], dp):
                root[p,q]['relief'], root[p,q]['bg'] = RAISED, root[p+dp,q]['bg']
            else: # glissière verticale
            dq, p = q // abs(q), hole[0]
    J'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\Quentin\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1549, in __call__
        return self.func(*args)
      File "C:/Users/Quentin/Desktop/Python/POO fenetre/ouango.py", line 41, in <lambda>
        command=lambda: cb_button(True))
      File "C:/Users/Quentin/Desktop/Python/POO fenetre/ouango.py", line 10, in cb_button
        if flag: shuffle(cols) # mélanger les couleurs si ' Shuffle' a été pressé
      File "C:\Users\Quentin\AppData\Local\Programs\Python\Python35-32\lib\random.py", line 269, in shuffle
        for i in reversed(range(1, len(x))):
    TypeError: object of type 'float' has no len()

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Salut,

    Le code que tu fais tourner n'est manifestement pas celui que tu montres.

    Sous Python 3 range ne retourne plus une liste mais un itérateur, donc ton code doit lever une erreur plus tôt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Python 2.7.3 (default, Jun 22 2015, 19:43:34) 
    [GCC 4.6.3] on linux2
    >>> dim = 2
    >>> cols = (int(dim *(dim+1)/2)) * range(4)
    >>> cols
    [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]
    >>> 
     
    Python 3.2.3 (default, Jun 18 2015, 21:46:42) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> dim = 2
    >>> cols = (int(dim *(dim+1)/2)) * range(4)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unsupported operand type(s) for *: 'int' and 'range'
    >>>

Discussions similaires

  1. [VB]erreur de type
    Par amel95140 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/01/2006, 15h51
  2. Réponses: 1
    Dernier message: 12/12/2005, 04h39
  3. [LG] Erreur de type incompatible dans assignment
    Par Tuxico dans le forum Langage
    Réponses: 4
    Dernier message: 03/12/2005, 22h06
  4. erreur Data type mismatch in criteria expression
    Par bachilbouzouk dans le forum ASP
    Réponses: 3
    Dernier message: 20/04/2005, 12h48
  5. [Agents services] Erreur de types imcompatibles
    Par ApollloCrid dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 14/04/2005, 20h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo