2010-10-30 2 views
2

Я исхожу из базы данных javascript для Python, и я столкнулся с базовой, но запутанной проблемой.Проверьте, содержит ли строка одно значение или синтаксическую ошибку?

У меня есть строка, которая может содержать значение «left», «center» или «right», , Я пытаюсь проверить, содержит ли переменная «left» или «right».

В его легко расслоение плотной:

if(str === 'left' || str === 'right'){} 

Однако в питоне я получаю ошибку синтаксиса с этим:

if str == 'left' || str == 'right': 

Почему не эта работа, и что это правильный синтаксис?

+1

Примечание: вы никогда не должны затенять встроенные имена (например, 'str',' int', 'iter' или - очень популярны -' list'). – delnan

+0

В интересах любого, смущенного двусмысленным «содержит»: @Geuis хочет 'str === 'left'' и т. Д. Js (Javascript)' === 'означает« ровно равный »без принуждения типа. См. Http://www.w3schools.com/js/js_comparisons.asp –

ответ

11

Python's logical OR operator называется or. Нет ||.

if string == 'left' or string == 'right': 
##     ^^ 

Кстати, в Python это своего рода тест обычно записывается в виде:

if string in ('left', 'right'): 

## in Python ≥3.1, also possible with set literal 
## if string in {'left', 'right'}: 

отметить также, что str is a built-in function в Python. Вам следует избегать именования переменной, которая сталкивается с ними.

+0

В чем разница между || и в Python? – Geuis

+1

Да, логично или это 'или'. Побитово или по-прежнему '|' (в отличие, например, от Паскаля (диалекты?), Что довольно странно). Редактировать @ Geius: в Python нет '||'. Вот почему вы получаете синтаксическую ошибку, а не неожиданное поведение. – delnan

+1

| является поразрядным «или» оператором в Python. Однако это не имеет смысла, когда два из них вместе, как и в «||». Следовательно, синтаксическая ошибка. –

Смежные вопросы