Questão de Tecnologia da Informação #019f69c7
(Q84) O código Python a seguir apresenta como resultado "True".
python
x = bool(-3)
y = bool("True"*x)
z = bool("False")
print (x and y and z)
Certo
Errado
Explicação Oficial / Explicações da Comunidade
Para resolver esta questão, precisamos analisar o comportamento de conversão de tipos (typecasting) para booleano e as operações lógicas em Python passo a passo:
-
Análise de
x = bool(-3):
Em Python, a funçãobool()converte um valor para booleano. Qualquer número diferente de zero (0ou0.0) é considerado verdadeiro (True). Como-3é um número inteiro diferente de zero,bool(-3)retornaTrue. Portanto,x = True. -
Análise de
y = bool("True"*x):
Aqui temos uma multiplicação de uma string por um booleano:"True" * x. Em Python, o tipo booleano é uma subclasse de inteiro (int), ondeTrueequivale a1eFalseequivale a0.
Portanto,"True" * xé equivalente a"True" * 1, o que resulta na própria string"True".
Ao aplicarbool("True"), a função avalia se a string é vazia ou não. Qualquer string não vazia em Python é avaliada comoTrue. Portanto,y = True. -
Análise de
z = bool("False"):
Este é um detalhe muito comum que costuma confundir candidatos. A string"False"não é um valor booleano, mas sim um texto (uma string não vazia). Como qualquer string não vazia em Python possui valor lógico verdadeiro,bool("False")retornaTrue. Portanto,z = True. -
Análise de
print (x and y and z):
Substituindo os valores obtidos na expressão lógica:
True and True and True
Como todos os operandos são verdadeiros, o resultado da operação de conjunção (and) éTrue.
Logo, o código de fato apresentará como resultado True, tornando a afirmação Certa (C).