2013-05-29 2 views
1

J'ai donc cette fonction.Pourquoi ma fonction n'imprime-t-elle pas

def test(fourBits): 
    binaryDigits = fourBits 
    if binaryDigits[1] == 1: 
    print 'test' 

Si j'entre test('1111') il ne sera pas imprimer test. Je ne comprends pas pourquoi ce n'est pas?

+2

car '1111' est une chaîne alors que 1 est un nombre entier. –

+0

Pas besoin de définir une variable locale dans la méthode aussi. – squiguy

Répondre

3

Utiliser ce:

if int(binaryDigits[1]) == 1: 

ou celle-ci:

if binaryDigits[1] == '1': 

de sorte que les types correspondent, c.-à comparer deux caractères ou deux nombres.

3

binaryDigits [1] est une chaîne, 1 est un nombre entier

+0

Vive les gars, je savais que c'était quelque chose de stupide. Vivez et apprenez je suppose. – Danrex

0

essayez print binaryDigits[1] avant votre instruction if pour voir ce que cache votre instruction if.

+0

Inutile ici. '''' et' 1' impriment exactement la même chose. – Cairnarvon

+0

'print repr (...)' est plus utile dans ce cas –

1

Peut-être que ce que vous voulez est quelque chose comme ça. Utilisez un nombre entier au lieu d'une chaîne et testez le bit par des opérateurs au niveau du bit.

def test(value): 
    if (value >> 1) & 1: 
     print 'true' 

Voici le résultat.

>>> test(0b0010) 
true 
>>> test(0b0000) 
>>> 
Questions connexes