SóProvas


ID
5255227
Banca
CESPE / CEBRASPE
Órgão
Polícia Federal
Ano
2021
Provas
Disciplina
Programação
Assuntos

Com relação a conceitos de programação Python e R, julgue o item que se segue.


O código Python a seguir apresenta como resultado "True".

x = bool(-3)

y = bool("True"*x)

z = bool("False")

print (x and y and z)

Alternativas
Comentários
  • No preliminar foi dada como certa, contudo após a análise dos recursos a banca alterou para ERRADA, com a seguinte justificativa: O resultado que deveria ser True, e não "True".  

    Com a mesma justificativa, a banca alterou o gabarito da outra questão por conta das aspas.

    Justificativa: O resultado que deveria ser 12, e não "12". 

  • Os booleanos representam um de dois valores: True ou False.

    A função permite que você avalie qualquer valor e dê a você True ou False em troca.

    Quase qualquer valor é avaliado True se tiver algum tipo de conteúdo.

    Qualquer string éTrue, exceto strings vazias.

    Qualquer número é True, exceto 0.

    Qualquer lista, tupla, conjunto e dicionário sãoTrue, exceto os vazios.

    Na questão, X, Y e Z têm como resultado True; na final, é realizado um teste lógico e, neste caso, todos os valores são True, então será impresso na tela o resultado True

  • A questão e o gabarito definitivo dela ficaram assim como a banca: Uma bost@, não dá pra saber se as aspas duplas são para referenciação ou parte do resultado, dúbia.

  • Primeiramente, devemos saber quando que um dado booleano será considerado como falso. Fora dessas hipóteses, o valor será dado como verdadeiro. A falsidade ocorre nas seguintes situações:

    I. False (falso)

    x= bool(False)

    print(x)

    False

    No caso da questão, ele colocou entre aspas, virando uma string não nula, ou seja, possuirá valor verdadeiro.

    II. None (nulo)

    x=bool(None)

    print(x)

    False

    III. 0 (zero)

    x=bool(0)

    print (x)

    False

    Atenção! Se o zero vier entre aspas, o número virará uma string e possuirá valor verdadeiro.

    IV. "" (string vazia)

    x=bool("")

    print(x)

    False

    V. [] (lista vazia)

    x=bool([])

    print(x)

    False

    VI. () (tupla vazia)

    x= bool(())

    print(x)

    False

    VII. {} (dicionário vazio)

    x=bool({})

    print(x)

    False

    Os operadores booleanos em python são: and, or, not, is e in.

    • and: retorna um valor verdadeiro se e somente se as duas expressões forem verdadeiras.
    • or: retorna um valor falso se e somente se as duas expressões forem falsas
    • not: muda o valor de seu argumento, ou seja, not True é False, e not False é True.
    • is: retorna verdadeiro se receber duas referências ao mesmo objeto e falso caso contrário
    • in: retorna verdadeiro se receber um item e uma lista e o item ocorrer pelo menos uma vezes na lista e falso caso contrário.

    No caso da questão, todos os valores possuem como resposta True. Logo, a operação and retomará True.

    O erro foi da banca em colocar entre aspas, que tornou o resultado como uma string, e não um dado booleano.

    Fonte: https://www.codigofluente.com.br/aula-10-python-tipo-bool-e-operadores/

  • Acertei, pelo motivo errado. kkkk

  • x = bool(-3)

    y = bool("True"*x)

    z = bool("False")

    print (x and y and z)

    True

    Por que true?

    Quando é teclado "print (x and y and z), AND=VERDADE. Quer dizer, todos são verdadeiros? True.

    Ex: que daria False.

    print ((9<7) and (2<4))

    False.

    Motivo: 9 não é menor que 7 (false), e 2 é menor que 4 (true).

    Outro Exemplo:

    print ((9>7) and (2<4))

    True.

    Motivo: 9 é maior que 7 (true), e 2 é menor que 4 (true).

    Como gravei:

    Comparei o "and" e "or" no raciocínio lógico.

    And= "E" de exigente. Os dois devem ser verdadeiro.

    Or= "ou" ao menos um deve ser verdadeiro.

    Fonte: Estudos Gran curso.

    Confirmação: https://replit.com/languages/python3

    Sei que foi anulada, mas tentei explicar caso estivesse true, invés de "true".

  • Simples e objetivo para o entendimento:

    A função bool() retorna sempre True, exceto ser o parâmetro de entrada for: False, 0 ou vazio.

    Como assim?

    Vejam só:

    bool(False ) = False

    bool(0) = False

    bool() = False

    Em todos os outros casos, ele retornará True! Lembrem-se que False é diferente False :

    o primeiro é um booleano e o segundo é uma String. Logo...

    bool(False ) = False

    bool(”False ”) = True

    Dito isso, vejamos qual seria o resultado do código:

    bool(-3) = True #Não é nenhuma das exceções, logo retornará True

    bool(“True”*x) = True #String é True , multiplicado por x (True ) retornará True

    bool(“True”) = True #String sempre retornará True

    bool(x and y and z) #x, y, z = True , logo x and y and z = True

    O gabarito preliminar veio como verdadeiro, porque realmente o resultado é True.

    No entanto, a banca mudou o entendimento no gabarito definitivo porque a palavra True veio entre aspas – o que seria uma string e, não, um booleano. Eu acho que as aspas deixaram a questão ambígua e, não, errada.

    No entanto, o gabarito definitivo foi errado..

    Fonte: Diego Carvalho, Estratégia Concursos.

    Marcações e cores: Eu

    #PCDF

  • é isso ai mesmo.

  • a plataforma poderia colocar videos aulas sobre programação....

  • O trecho de código y = bool("True"*x) está INCORRETO.

    A justificativa da banca está completamente equivocada em considerar como gabarito o resultado "TRUE" sem aspa. O código nem roda, pois o "x" é uma variável não declarada. A função bool() com argumento diferente de FALSE, 0 e VAZIO retorna TRUE, porém o argumento deve respeitar as regras da linguagem, o qualquer coisa diferente de FALSE, 0 e VAZIO NÃO É LITERALMENTE QUALQUER COISA, mas sim argumentos VÁLIDOS dentro da linguagem.

    A resposta é incorreta independente do resultado está entre aspas ou não!

  • Baseei-me na tabela verdade!!