nombre dans un intervalle donné si la boucle python
Je suis en train de calculer cette expression simple en python:
si un nombre est plus grand que -1.0 et inférieur à 1.0 faire quelque chose.
J'ai essayé ceci:
if x > '-1.0' and x < '1.0':
DoSomething
mais il s'avère qu'il n'évalue que la deuxième partie (x < '1.0').
J'ai aussi essayé
if '-1.0' < x < '1.0':
DoSomething
mais étrangement, je n'ai pas ce que je veux. Toute suggestion s'il vous plaît????
- La sortie en êtes-vous? Avez-vous essayé de supprimer les guillemets?
- Rien du tout. Il devrait écrire une ligne, si c'est satisfait, de toute façon j'ai essayé de supprimer les guillemets mais il n'aide pas
- Quelle est la valeur de
x
? C'est aussi une chaîne de caractères? Si oui, vous pouvez la convertir en une valeur à virgule flottante avecfloat(x)
. Donc, si votre déclaration serait:if -1.0 < float(x) < 1.0:
. - Nous y voilà! Grâce srgerg, juste besoin de spécifier x comme un float.
Vous devez vous connecter pour publier un commentaire.
Vous comparez avec les chaînes de caractères, pas des numéros.
Permettra de faire la comparaison sur les chiffres.
x
? C'est une chaîne de caractères ou un nombre? Vous pouvez avoir besoin de convertirx
à un flotteur en premier (float(x)
) avant que vous pouvez faire numérique des comparaisons avec elle.Vous ne voulez pas mettre les chiffres entre guillemets - que les résultats d'une comparaison de chaînes de caractères, et non pas une comparaison numérique. Vous souhaitez
Comme d'autres réponses ont mentionné, vous devez supprimer les guillemets de sorte que vous êtes en comparant avec des chiffres plutôt que des chaînes de caractères.
Cependant, aucune de ces réponses utilisé Python enchaînés les comparaisons:
C'est l'équivalent de
if x > -1.0 and x < 1.0
, mais plus efficace carx
n'est évaluée qu'une fois.if -1.0 < float(x) < 1.0
.Ce que vous faites dans ce code est de comparer x avec la valeur de la chaîne '-1.0' ou '1.0', pas le double de la valeur. Essayez ce qui suit:
Cela fonctionnera également: