число в заданном диапазоне, если цикл питона - PullRequest
2 голосов
/ 22 ноября 2011

Я пытаюсь вычислить это простое выражение в python:

если число больше -1,0 и меньше 1,0, сделать что-то.

Я пробовал это:

if x > '-1.0' and x < '1.0':
    DoSomething

но оказывается, что он оценивает только вторую часть (x <'1.0'). Я тоже пробовал </p>

if '-1.0' < x < '1.0':
    DoSomething 

но странно, я не понимаю, чего хочу. Любое предложение, пожалуйста ????

Ответы [ 5 ]

7 голосов
/ 22 ноября 2011

Вы сравниваете со строками, а не числами.

if x > -1.0 and x < 1.0:
    pass

Сделайте сравнение по числам.

2 голосов
/ 22 ноября 2011

Как уже упоминалось в других ответах, вам нужно удалить кавычки, чтобы сравнивать их с числами, а не со строками.

Однако ни один из этих ответов не использовал цепочечные сравнения Python :

if -1.0 < x < 1.0:
    DoSomething 

Это эквивалентно if x > -1.0 and x < 1.0, но более эффективно, поскольку x оценивается только один раз.

2 голосов
/ 22 ноября 2011

Вы не хотите помещать числа в кавычки - это приводит к сравнению строк, а не к числовому сравнению.Вы хотите

if x > -1.0 and x < 1.0:
    DoSomething
1 голос
/ 14 мая 2013

Это также будет работать:

if abs(x) < 1.0
1 голос
/ 22 ноября 2011

То, что вы делаете в этом коде, сравнивает x со строковым значением '-1.0' или '1.0', а не с двойным значением.Попробуйте следующее:

if x > -1.0 and x < 1.0:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...