Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/06/2018, à 06:43

ar barzh paour

[Résolu] python-format-08

bonjour à tous
toujours en découverte de python je tombe sur une erreur dont je ne trouve pas la solution dans mon bouquin et pourtant ça parait simple
l'explication : 010 n'est pas une expression valide , il faut faire autrement

# 10 fonctionne
print("valeur : {}".format(10))
valeur : 10

# 010 ne fonctionne pas
print("valeur : {}".format(010))
  File "<stdin>", line 1
    print(" valeur : {}".format(010))
                                  ^
SyntaxError: invalid token

Dernière modification par ar barzh paour (Le 12/06/2018, à 11:05)


Ubuntu 18.04 (sept 2018) (était en essai depuis 12/2017)
Ubiuntu 16.04 (07/2016) et diverses versions  Ubuntu 14.04 ,  Studio 14.04 LTS 64 bits , MATE 16.04
(03/2018) : PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400
(06/2017) : Portable : Intel(R) Core(TM)2  Duo CPU     T5750  @ 2.00GHz 3Go de RAM DDR2 667 Mhz Ubuntu 16.04

Hors ligne

#2 Le 12/06/2018, à 06:53

pingouinux

Re : [Résolu] python-format-08

Bonjour,
Tu peux remplacer

print("valeur : {}".format(010))

par

print("valeur : {}".format("010"))

ou

print("valeur : {}".format(int("010")))

ou, si c'est de l'octal

print("valeur : {}".format(int("010",8)))

Hors ligne

#3 Le 12/06/2018, à 07:04

ar barzh paour

Re : [Résolu] python-format-08

oui , bien sur , mais pour faire très très simple
on demande dans un programme :
entrer l'heure :
je réponds 08
j'utilise la réponse dans le format ci dessus et on tombe sur une erreur

Dernière modification par ar barzh paour (Le 12/06/2018, à 07:04)


Ubuntu 18.04 (sept 2018) (était en essai depuis 12/2017)
Ubiuntu 16.04 (07/2016) et diverses versions  Ubuntu 14.04 ,  Studio 14.04 LTS 64 bits , MATE 16.04
(03/2018) : PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400
(06/2017) : Portable : Intel(R) Core(TM)2  Duo CPU     T5750  @ 2.00GHz 3Go de RAM DDR2 667 Mhz Ubuntu 16.04

Hors ligne

#4 Le 12/06/2018, à 07:18

pingouinux

Re : [Résolu] python-format-08

Ta réponse au programme est du texte, qu'il faut convertir en entier.

Hors ligne

#5 Le 12/06/2018, à 08:11

ar barzh paour

Re : [Résolu] python-format-08

j'ai l'impression qu'il faut que je re-étudie la façon de saisir les réponses

a=08
  File "<stdin>", line 1
    a=08
       ^
SyntaxError: invalid token

en plus développer , mais je ne sais pas si je suis plus clair dans mon questionnement
je définis une class

class Time(object): 
    "définition d'objets temporels"
    def __init__(self,hh=12,mm=0,ss=0):  # définition de la méthode constructeur
        self.heure   =hh 
        self.minute  =mm
        self.seconde =ss
    def affiche_heure(self):             # définition d'une méthode .affiche_heure() 
        print("{}:{}:{}".format(self.heure, self.minute, self.seconde)) 

# je voudrais bien l'utiliser simplement

Time(8).affiche_heure()   # affiche bien 8:0:0

donc en fait ma question devient plus précisement
comment faire pour que

class Time(object): 
    "définition d'objets temporels"
    def __init__(self,hh=12,mm=0,ss=0):  # définition de la méthode constructeur
        self.heure   =hh 
        self.minute  =mm
        self.seconde =ss
    def affiche_heure(self):             # définition d'une méthode .affiche_heure() 
        print("{}:{}:{}".format(self.heure, self.minute, self.seconde))
Time(08).affiche_heure()

ne génère pas d'erreur

python3 <nom du programme> 
  File "nom_du programme", line 9
    Time(08).affiche_heure()
          ^
SyntaxError: invalid token


( en dehors de mettre Time("08".affiche_heure() qui fonctionnera )
il doit falloir effectuer un gestion d'erreur , mais je butte déjà sur a=08 qui génère une erreur

Dernière modification par ar barzh paour (Le 12/06/2018, à 08:23)


Ubuntu 18.04 (sept 2018) (était en essai depuis 12/2017)
Ubiuntu 16.04 (07/2016) et diverses versions  Ubuntu 14.04 ,  Studio 14.04 LTS 64 bits , MATE 16.04
(03/2018) : PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400
(06/2017) : Portable : Intel(R) Core(TM)2  Duo CPU     T5750  @ 2.00GHz 3Go de RAM DDR2 667 Mhz Ubuntu 16.04

Hors ligne

#6 Le 12/06/2018, à 08:22

ar barzh paour

Re : [Résolu] python-format-08

ce n'est peut-être pas possible
j'entrevois une solution , au lieu d'utiliser directement Time(08)
peut-être quelque chose comme

h=input ("donner l'heure :" )
Time(h).affiche_heure

mais je trouve ça bizarre


Ubuntu 18.04 (sept 2018) (était en essai depuis 12/2017)
Ubiuntu 16.04 (07/2016) et diverses versions  Ubuntu 14.04 ,  Studio 14.04 LTS 64 bits , MATE 16.04
(03/2018) : PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400
(06/2017) : Portable : Intel(R) Core(TM)2  Duo CPU     T5750  @ 2.00GHz 3Go de RAM DDR2 667 Mhz Ubuntu 16.04

Hors ligne

#7 Le 12/06/2018, à 08:25

pingouinux

Re : [Résolu] python-format-08

C'est normal, comme te l'indique le message d'erreur, 08 n'est pas valide.
Comment effectues-tu la lecture de cette valeur ?

Hors ligne

#8 Le 12/06/2018, à 09:14

ar barzh paour

Re : [Résolu] python-format-08

pour l'instant je ne fais que découvrir ,
je suis (du verbe suivre) un bouquin et comme je décris en post ci-dessus , on définit un classe Time(),
une fois cette classe définie , on devrait pouvoir l'utiliser sans avoir à se préoccuper des mauvaises saisies
et taper comme je l'expliquais Time(08) , pourquoi pas , à priori non ,  je me posais la question ....
a=08 ==> invalid token , il va falloir que je m'y fasse


Ubuntu 18.04 (sept 2018) (était en essai depuis 12/2017)
Ubiuntu 16.04 (07/2016) et diverses versions  Ubuntu 14.04 ,  Studio 14.04 LTS 64 bits , MATE 16.04
(03/2018) : PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400
(06/2017) : Portable : Intel(R) Core(TM)2  Duo CPU     T5750  @ 2.00GHz 3Go de RAM DDR2 667 Mhz Ubuntu 16.04

Hors ligne

#9 Le 12/06/2018, à 09:23

pingouinux

Re : [Résolu] python-format-08

python3 <nom du programme> 
  File "nom_du programme", line 9
    Time(08).affiche_heure()
          ^
SyntaxError: invalid token

Ce n'est pas une erreur de saisie, mais une erreur de syntaxe dans le programme. Ce dernier ne s'exécute donc pas, et tu ne peux pas y tester d'éventuelles erreurs.
Si tu as un exemple avec une erreur de saisie, il sera possible de tester cette erreur dans le programme.

Hors ligne

#10 Le 12/06/2018, à 10:27

ar barzh paour

Re : [Résolu] python-format-08

j'ai effectivement trouvé la réponse l'explication en lisant syntaxe et sémantique python

Entiers littéraux
integer      ::=  decinteger | bininteger | octinteger | hexinteger
decinteger   ::=  nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger   ::=  "0" ("b" | "B") (["_"] bindigit)+
octinteger   ::=  "0" ("o" | "O") (["_"] octdigit)+
hexinteger   ::=  "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::=  "1"..."9"
digit        ::=  "0"..."9"
bindigit     ::=  "0" | "1"
octdigit     ::=  "0"..."7"
hexdigit     ::=  digit | "a"..."f" | "A"..."F"

d'après ce que je comprends , 0 doit être suivi de b ou o ou x pour obtenir un integer
08 n'est donc pas valide dans l'expression a=08
par contre a=08. est accepté ( mais c'est alors un flottant)

l'erreur (de syntaxe) est donc de vouloir utiliser 0 suivit d'un autre chiffre et sans point , j'ai compris c'est interdit ,

Dernière modification par ar barzh paour (Le 12/06/2018, à 11:09)


Ubuntu 18.04 (sept 2018) (était en essai depuis 12/2017)
Ubiuntu 16.04 (07/2016) et diverses versions  Ubuntu 14.04 ,  Studio 14.04 LTS 64 bits , MATE 16.04
(03/2018) : PC          : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz  + 4GiB RAM DDR4-2400
(06/2017) : Portable : Intel(R) Core(TM)2  Duo CPU     T5750  @ 2.00GHz 3Go de RAM DDR2 667 Mhz Ubuntu 16.04

Hors ligne