Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Doug713705
Le 03-03-2016, nous expliquait dans fr.comp.lang.python () :
Bonjour,
Bonjour,
J'aimerais savoir si il est possible de fixer des conditions à une variable à partir du moment ou on la déclare.
par exemple si je crée une variable batterie:
a = 0 batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x if batterie < 0: print error if a = 0: batterie = 100
x = 12 a = 1 batterie = a if a == 0 else x print batterie
Affichera 12 (la valeur de x) si a != 0 et 0 dans le cas contraire.
la syntaxe est: nom_variable = <valeur> if <condition> else <autre_valeur>
On peut même enchainer les condittions: batterie = a if a == 0 else 24 if a==1 else x print batterie
Affichera 0 si a == 0, 24 si a == 1 et 12 (la valeur de x) dans tous les autres cas.
-- Et l'on pousse à fond les moteurs À s'en faire péter la turbine. C'est tellement classe d'être loser Surtout les matins où ça winne. -- H.F. Thiéfaine, Errer humanum est
Le 03-03-2016, max.abylon@gmail.com nous expliquait dans
fr.comp.lang.python
(<bb2ac1ee-1493-4368-9af4-55b360e463dc@googlegroups.com>) :
Bonjour,
Bonjour,
J'aimerais savoir si il est possible de fixer des conditions à une variable à partir du moment ou on la déclare.
par exemple si je crée une variable batterie:
a = 0
batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x
if batterie < 0:
print error
if a = 0:
batterie = 100
x = 12
a = 1
batterie = a if a == 0 else x
print batterie
Affichera 12 (la valeur de x) si a != 0 et 0 dans le cas contraire.
la syntaxe est:
nom_variable = <valeur> if <condition> else <autre_valeur>
On peut même enchainer les condittions:
batterie = a if a == 0 else 24 if a==1 else x
print batterie
Affichera 0 si a == 0, 24 si a == 1 et 12 (la valeur de x) dans tous les
autres cas.
--
Et l'on pousse à fond les moteurs
À s'en faire péter la turbine.
C'est tellement classe d'être loser
Surtout les matins où ça winne.
-- H.F. Thiéfaine, Errer humanum est
Le 03-03-2016, nous expliquait dans fr.comp.lang.python () :
Bonjour,
Bonjour,
J'aimerais savoir si il est possible de fixer des conditions à une variable à partir du moment ou on la déclare.
par exemple si je crée une variable batterie:
a = 0 batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x if batterie < 0: print error if a = 0: batterie = 100
x = 12 a = 1 batterie = a if a == 0 else x print batterie
Affichera 12 (la valeur de x) si a != 0 et 0 dans le cas contraire.
la syntaxe est: nom_variable = <valeur> if <condition> else <autre_valeur>
On peut même enchainer les condittions: batterie = a if a == 0 else 24 if a==1 else x print batterie
Affichera 0 si a == 0, 24 si a == 1 et 12 (la valeur de x) dans tous les autres cas.
-- Et l'on pousse à fond les moteurs À s'en faire péter la turbine. C'est tellement classe d'être loser Surtout les matins où ça winne. -- H.F. Thiéfaine, Errer humanum est
a = 0 batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x if batterie < 0: print error if a = 0: batterie = 100
(Note au passage que si batterie < 0 et a != 0 tu finis avec une valeur que tu ne veux pas. J'imagine que "print error" est juste une façon de parler...)
Je ne suis pas sûr de comprendre ce que tu cherches.
a = 0
batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x
if batterie < 0:
print error
if a = 0:
batterie = 100
(Note au passage que si batterie < 0 et a != 0 tu finis avec une valeur
que tu ne veux pas. J'imagine que "print error" est juste une façon de
parler...)
Je ne suis pas sûr de comprendre ce que tu cherches.
a = 0 batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x if batterie < 0: print error if a = 0: batterie = 100
(Note au passage que si batterie < 0 et a != 0 tu finis avec une valeur que tu ne veux pas. J'imagine que "print error" est juste une façon de parler...)
Je ne suis pas sûr de comprendre ce que tu cherches.
Le 03/03/2016 à 19:37, Cémoi a écrit dans le message <56d88466$0$650$ :
A noter qu'en Python 2.x il faut au moins être en Python 2.5
Python 2.5 - September 19, 2006
Il y en a beaucoup qui utilisent une version de Python qui a près de dix ans ?
L'idée était aussi de dire que Python a quand même mis 16 ans pour définir une syntaxe et implémenter un opérateur conditionnel ternaire. Les discussions attenantes à la PEP308 montrent qu'intégrer cette commodité de langage ne s'est pas faite sans mal et a même failli ne jamais exister.
Pour ce qui est de savoir s'il y en a beaucoup qui utilisent encore une version de Python < 2.5, je m'en moque éperdument, je pense juste que cela peut encore exister, et que si mon commentaire ne devait avoir jamais servi qu'à une seule personne, j'en serai quand même ravi :)
Le 03/03/2016 20:51, Benoit Izac a écrit :
Bonjour,
Le 03/03/2016 à 19:37, Cémoi a écrit dans le message
<56d88466$0$650$426a34cc@news.free.fr> :
A noter qu'en Python 2.x il faut au moins être en Python 2.5
Python 2.5 - September 19, 2006
Il y en a beaucoup qui utilisent une version de Python qui a près de dix
ans ?
L'idée était aussi de dire que Python a quand même mis 16 ans pour
définir une syntaxe et implémenter un opérateur conditionnel ternaire.
Les discussions attenantes à la PEP308 montrent qu'intégrer cette
commodité de langage ne s'est pas faite sans mal et a même failli ne
jamais exister.
Pour ce qui est de savoir s'il y en a beaucoup qui utilisent encore une
version de Python < 2.5, je m'en moque éperdument, je pense juste que
cela peut encore exister, et que si mon commentaire ne devait avoir
jamais servi qu'à une seule personne, j'en serai quand même ravi :)
Le 03/03/2016 à 19:37, Cémoi a écrit dans le message <56d88466$0$650$ :
A noter qu'en Python 2.x il faut au moins être en Python 2.5
Python 2.5 - September 19, 2006
Il y en a beaucoup qui utilisent une version de Python qui a près de dix ans ?
L'idée était aussi de dire que Python a quand même mis 16 ans pour définir une syntaxe et implémenter un opérateur conditionnel ternaire. Les discussions attenantes à la PEP308 montrent qu'intégrer cette commodité de langage ne s'est pas faite sans mal et a même failli ne jamais exister.
Pour ce qui est de savoir s'il y en a beaucoup qui utilisent encore une version de Python < 2.5, je m'en moque éperdument, je pense juste que cela peut encore exister, et que si mon commentaire ne devait avoir jamais servi qu'à une seule personne, j'en serai quand même ravi :)
Pierre Maurette
:
Bonjour,
J'aimerais savoir si il est possible de fixer des conditions à une variable à partir du moment ou on la déclare.
par exemple si je crée une variable batterie:
a = 0 batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x if batterie < 0: print error if a = 0: batterie = 100
Quid pour batterie == 0 ? Votre problème n'est pas vraiment posé. Quel est le cycle de vie de 'a' et 'batterie' ? Quel comportement si 'batterie' sort des clous ? Peut-être quelques "assert" suffiraient, selon le contexte d'utilisation ? Ecrire (dériver) une classe numérique "élément d'un intervalle" semble bien compliqué. En revanche, pourquoi pas une classe laBatterie dont votre 'batterie' serait un attribut.
[GAG] Pour affecter sans test ni opérateur ternaire (mais peu lisible et peut-être lent):
batterie = 100 * (not a) + (not not a) * (batterie / (batterie >= 0))
Bout de test:
def conform(a, batterie): return 100 * (not a) + (not not a) * (batterie / (batterie >= 0))
for batterie in [0, 123, -123] + [float(b) for b in [0, 123, -123]]: for a in range(-2, 2) + [float(b) for b in range(-2, 2)]: try: print 'a= %s, batterie= %s, batterie -> %s' % (a, batterie, conform(a, batterie)) except ZeroDivisionError: print 'Krosserreur a= %s, batterie= %s' % (a, batterie)
[/GAG]
-- Pierre Maurette
max.abylon@gmail.com :
Bonjour,
J'aimerais savoir si il est possible de fixer des conditions à une variable à
partir du moment ou on la déclare.
par exemple si je crée une variable batterie:
a = 0
batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x
if batterie < 0:
print error
if a = 0:
batterie = 100
Quid pour batterie == 0 ?
Votre problème n'est pas vraiment posé. Quel est le cycle de vie de 'a'
et 'batterie' ? Quel comportement si 'batterie' sort des clous ?
Peut-être quelques "assert" suffiraient, selon le contexte
d'utilisation ? Ecrire (dériver) une classe numérique "élément d'un
intervalle" semble bien compliqué. En revanche, pourquoi pas une classe
laBatterie dont votre 'batterie' serait un attribut.
[GAG]
Pour affecter sans test ni opérateur ternaire (mais peu lisible et
peut-être lent):
batterie = 100 * (not a) + (not not a) * (batterie / (batterie >= 0))
Bout de test:
def conform(a, batterie):
return 100 * (not a) + (not not a) * (batterie / (batterie >= 0))
for batterie in [0, 123, -123] + [float(b) for b in [0, 123, -123]]:
for a in range(-2, 2) + [float(b) for b in range(-2, 2)]:
try:
print 'a= %s, batterie= %s, batterie -> %s' % (a, batterie,
conform(a, batterie))
except ZeroDivisionError:
print 'Krosserreur a= %s, batterie= %s' % (a, batterie)
J'aimerais savoir si il est possible de fixer des conditions à une variable à partir du moment ou on la déclare.
par exemple si je crée une variable batterie:
a = 0 batterie( batterie > 0, batterie = 100 if a = 0)
au lieu de
Batterie = x if batterie < 0: print error if a = 0: batterie = 100
Quid pour batterie == 0 ? Votre problème n'est pas vraiment posé. Quel est le cycle de vie de 'a' et 'batterie' ? Quel comportement si 'batterie' sort des clous ? Peut-être quelques "assert" suffiraient, selon le contexte d'utilisation ? Ecrire (dériver) une classe numérique "élément d'un intervalle" semble bien compliqué. En revanche, pourquoi pas une classe laBatterie dont votre 'batterie' serait un attribut.
[GAG] Pour affecter sans test ni opérateur ternaire (mais peu lisible et peut-être lent):
batterie = 100 * (not a) + (not not a) * (batterie / (batterie >= 0))
Bout de test:
def conform(a, batterie): return 100 * (not a) + (not not a) * (batterie / (batterie >= 0))
for batterie in [0, 123, -123] + [float(b) for b in [0, 123, -123]]: for a in range(-2, 2) + [float(b) for b in range(-2, 2)]: try: print 'a= %s, batterie= %s, batterie -> %s' % (a, batterie, conform(a, batterie)) except ZeroDivisionError: print 'Krosserreur a= %s, batterie= %s' % (a, batterie)