Tecnologia da Informação
medium

Pregunta de Tecnologia da Informação #019f69c7

Enunciado de la Pregunta
Tecnologia da Informação
#Booleanos
#2021
#Python
#Tipos de Dados
#Policial
#Escrivão
#Lógica de Programação
#Cebraspe
#PF
Medio

(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)

A

Certo

Correcto
B

Errado

Explicación Oficial / Explicaciones de la Comunidad

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:

  1. Análise de x = bool(-3):
    Em Python, a função bool() converte um valor para booleano. Qualquer número diferente de zero (0 ou 0.0) é considerado verdadeiro (True). Como -3 é um número inteiro diferente de zero, bool(-3) retorna True. Portanto, x = True.

  2. 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), onde True equivale a 1 e False equivale a 0.
    Portanto, "True" * x é equivalente a "True" * 1, o que resulta na própria string "True".
    Ao aplicar bool("True"), a função avalia se a string é vazia ou não. Qualquer string não vazia em Python é avaliada como True. Portanto, y = True.

  3. 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") retorna True. Portanto, z = True.

  4. 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).