2016-01-11 2 views
-1

Я выполняющем следующий фрагмент кода на Python 2.7:TypeError: неподдерживаемый тип операнда (ов) для &: «ул» и «Int»

i=0 
j=3 
a=['A','B','B','A'] 
while(a[i]=="A" & i<j): 
    #do something 

И я получаю эту ошибку.

TypeError: unsupported operand type(s) for &: 'str' and 'int'

Любая помощь?

+0

Возможный дубликат [TypeError: неподдерживаемый тип операнда (ов) для -: 'Int' и '' ул] (http://stackoverflow.com/questions/13831905/typeerror-unsupported-operand-types-for-int-and-str) –

+0

@JarrodRoberson: Может показаться похожим, но, если вы видите, операторы разные. Я не знал, что решение будет аналогичным для разных операторов. – madhavi

ответ

1

& является "побитовое и" операнд в Python, вы должны использовать and вместо

из wiki.python.org:

x & y : Does a "bitwise and". Each bit of the output is 1 if the corresponding bit of x AND of y is 1, otherwise it's 0.

"побитовое и" как это работает:

>>> 1 & 0 
0 
>>> 0 & 0 
0 
>>> 1 & 1 
1 
+0

Возможный ответ: «аналогичный вопрос» не решает мою проблему. Как вы предлагаете мне решить эту ошибку? – madhavi

-1

Вам нужно установить скобки вокруг двух условий, как показано ниже.

i=0 
j=3 
a=['A','B','B','A'] 
while((a[i]=="A") & (i<j)): 
    #do something 

см ссылку ниже для более подробного объяснения Difference between 'and' (boolean) vs. '&' (bitwise) in python. Why difference in behavior with lists vs numpy arrays?

+0

Вы действительно думаете, что хотели использовать побитовое действие в этом случае? – JJJ

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