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 :

ERREURS en python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Par défaut ERREURS en python
    Bonsoir,

    J'ai une erreur python dont je n'arrive pas à trouver l'origine

    elif numero_gagnant % 2 == nombre_mise % 2:
    TypeError: not all arguments converted during string formatting

    Si quelqu'un savait de quoi il s'agit,

    Merci,

    SR

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonsoir,

    Comment sont créées tes variables numero_gagnant et nombre_mise ?

    Je dis ça parce-que si je teste sur mon interpréteur, ça me donne une erreur si par exemple j'essaye de faire une opération numérique avec une chaîne de caractères...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> "ldfj"%2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: not all arguments converted during string formatting

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Par défaut
    En gros j'ai repris le corrigé du livre de vincent le goff septembre 2011 apprenez à programmer en python en voulant simplifier la solution de la page 92 dont voici le code

    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
    import os 
     
    from random import randrange
    from math import ceil
     
    argent = 1000
    continuer_partie = True
     
    print("vous vous installez à la tablette de roulette avec" , argent , "$")
     
    nombre_mise = -1
    nombre_mise = input ("taper le nombre sur lequel vous voulez miser (entre 0 et 49) : ")
     
    mise = 0
    mise = input ("taper le montant de votre mise : ")
     
    numero_gagnant = randrange(50)
    print ("la roulette tourne....... ..... et s'arrete sur le numero" , numero_gagnant)
     
    if numero_gagnant == nombre_mise :
               print ("felicitations ! vous obtenez" , mise * 3, "$ !")
               argent += mise * 3
    elif numero_gagnant % 2 == nombre_mise % 2:
               mise = ceil(mise * 0.5)
               print ("vous avez mise sur la bonne couleur vous obtenez" , mise , "$")
               argent += mise 
    else :
               print ("desole l'ami ce n'est pas pour cette fois; vous perdez votre mise ")
               argent -= mise
     
    if argent <= 0 :
                  print ("vous etes ruine ! c'est la fin de la partie ")
                  continuer_partie = False
    else :
                  print ("vous avez à present " , argent , "$")
                  quitter = input ("souhaitez vous quitter le casino (o/n) ? ")
                  if quitter == "o" or quitter == "0" :
                     print ("vous quitter le casino avec vos gains ")
                     continuer_partie = False 
     
    os.system("pause")
    et sur ce code, j'ai cette erreur

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 215
    Par défaut
    D'après ce qui est dit dans ce tutoriel https://python.developpez.com/cours/...3/?page=page_8, la fonction input renvoie une CHAINE de caractères.
    (String en anglais ...) on retrouve le mot string que tu avais dans ton message d'erreur et qui était quand même un sacré indice.

    Ce que tu voudrais faire, c'est tester si 2 nombres sont de même parité,
    Mais ce que tu fais, c'est tester si 2 chaines sont de même parité. Et l'opérateur % appliqué sur une chaîne, ça plante.

    Pour t'en assurer, la recette magique qui aide toujours en phase de débuggage, c'est d'utiliser la fonction print.
    En ligne 13, met : print ( type( nombre_mise) )
    Et regarde ce qu'il t'indique.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 40
    Par défaut
    la solution de fred marche; la votre renvoie la même erreur
    Pourtant le livre de dec 2011 c'est le python 3 le 4 n'existe pas.Le livre serait t'il déjà obsolète ?
    Merci pour la réponse

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    C'est sans doute la version 2.6 ou 2.7, et ces versions sont obsolètes pour les débutants. Pour ton apprentissage il est souhaitable d'abandonner ce tutoriel.

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Ce code utilise l'ancienne version du langage, et tu dois remplacer input par int(input(...)) là où on demande un entier...

Discussions similaires

  1. ignorer erreur keyError python avec gensim
    Par africanwinners dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 20/01/2017, 16h29
  2. [Python 3.X] Erreur programmation python.
    Par nico240990 dans le forum Général Python
    Réponses: 2
    Dernier message: 28/01/2015, 15h52
  3. Message d'erreur en python que je voudrais comprendre
    Par comme de bien entendu dans le forum Général Python
    Réponses: 3
    Dernier message: 20/08/2013, 10h14
  4. Python + Pmw erreur Pmw.initialise(root)
    Par zezitinho dans le forum Tkinter
    Réponses: 5
    Dernier message: 07/04/2006, 13h27
  5. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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