Q:

Condicionais e Fluxo de Controle (Codecademy Python 9/15)

Olá, estou realizando um exercicio do codecademy e tenho de resolver as seguintes condicionais:

Iguale bool_one ao resultado de False or not True and True 
Iguale bool_two ao resultado de False and not True or True 
Iguale bool_three ao resultado de True and not (False or False) 
Iguale bool_four ao resultado de not not True or False and not True 
Iguale bool_five ao resultado de False or not (True and True)

Segue abaixo minhas respostas:
bool_one = False
bool_two = False
bool_three = True
bool_four = True
bool_five = False

Porém o validador do exercicio está indicando que uma ou mais respostas estão erradas.

A:

O seu erro está no segundo item, que é esse:

Iguale bool_two ao resultado de False and not True or True

Executando o código:
print False and not True or True

Você terá como resultado:

True

Olhando na tabela de precedência em Python Docs - Expressions você verá que o not tem maior precedência dentre os operadores dessa expressão, e o and tem a segunda maior precedência, sendo ele executado antes do or porém depois do not. Portanto o compilador faz os seguintes cálculos:

not True => False
False and False => False
False or True => True (resultado final)

Ao fazer um testo e dar precedência maior para o or pode-se ver que o resultado é False. Exemplo:
print False and not (True or True)

Resultado:

False

