Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Prof. Hamilton Rodrigues 
 
 
1 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Python 
PCDF – Agente - Informática 
Pós-edital 
Prof. Hamilton Rodrigues 
Prof. Hamilton Rodrigues 
 
 
2 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Sumário 
SUMÁRIO 2 
LINGUAGEM PYTHON 3 
INTRODUÇÃO 3 
TIPOS DE DADOS 9 
Coleções 10 
Manipulação de listas 10 
Trabalhando com ranges 11 
Manipulação de strings 13 
OPERADORES 15 
Operadores numéricos 15 
Operadores relacionais e booleanos 15 
Operadores sequenciais 16 
ESTRUTURAS DE DECISÃO 17 
if 17 
if-else 17 
if-elif-else 17 
ESTRUTURAS DE REPETIÇÃO 19 
for 19 
for-else 20 
while 21 
while-else 21 
FUNÇÕES 22 
CLASSES 23 
QUESTÕES COMENTADAS PELO PROFESSOR 24 
LISTA DE QUESTÕES COMENTADAS 74 
GABARITO 96 
RESUMO DIRECIONADO 97 
 
 
 
 
 
Prof. Hamilton Rodrigues 
 
 
3 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Linguagem Python 
Introdução 
Caros amigos, futuros Policiais Civis do DF, nesta aula vamos falar da linguagem de programação Python. A 
linguagem tem crescido muito nos últimos tempos e alguns acham que é uma tecnologia nova. Na verdade, 
Python existe desde 1991! Apesar dessa longa “estrada”, Python ganhou notoriedade no mercado nos últimos 
anos. Hoje em dia está entre as linguagens de programação mais utilizadas. Segundo o relatório Octoverse do 
Github, é a 3ª linguagem mais popular do mundo. 
 
O que fez o Python obter esse lugar de destaque são algumas características como alto nível de abstração, 
multiparadigma, foco no programador, versatilidade, dentre outras. Nós vamos estudar todas elas além de 
aprender a usar as construções da linguagem, ler/escrever programas em Python e o principal: gabaritar todas as 
questões de concurso sobre essa linguagem! 
Vocês sabem que um programa de computador é um conjunto de instruções que descrevem uma tarefa a 
ser realizada por um computador. O computador está lá no nível mais baixo de abstração. Só entende 0 e 1. O 
humano está no outro extremo, no nível mais alto de abstração. 
 
Ao passo que o computador só é capaz de trabalhar com coisas concretas, o homem pode trabalhar com 
pensamentos abstratos e subjetivos. Para uma pessoa dar instruções para um computador tem que ser usado um 
meio termo, algo que ambos entendam, que é a linguagem de programação. 
Prof. Hamilton Rodrigues 
 
 
4 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Observem a nossa pirâmide de nível de abstração que o Python está no degrau mais alto, ou seja, é uma 
linguagem de alto nível. O código em Python é bastante conciso, relativamente fácil de ser lido, mais próximo da 
linguagem humana que em outras linguagens. Isso foi feito de propósito pelos criadores da tecnologia. O objetivo 
desde o início era enfatizar a legibilidade do código por parte do programador, facilitar o seu trabalho e aumentar 
sua produtividade. Um algoritmo escrito em Python requer menos linhas de código que o mesmo algoritmo escrito 
em outras linguagens. 
O código-fonte Python (arquivo com extensão .py) é interpretado. Isso quer dizer que suas instruções são 
executadas interativamente, uma por uma, por um interpretador. Internamente, ao executar um programa em 
Python, ele é automaticamente transformado em um formato denominado bytecode (arquivo com extensão .pyc 
ou .pyo) para ser interpretado por uma máquina virtual. 
 
 
 
Esse bytecode é portável, isto é, roda em qualquer sistema operacional (Windows, Mac, Linux, Android, etc.) 
desde que esse sistema possua uma máquina virtual Python. Isso dá muita versatilidade ao Python. O mesmo 
código roda em diversos sistemas diferentes. Por isso é dita uma linguagem multiplataforma. 
 
Prof. Hamilton Rodrigues 
 
 
5 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Professor, ainda não entendi o que significa multiplataforma. 
Sem problema. Observe no esquema abaixo como funciona. Você faz seu programa Python (.py), compila-
o transformando num bytecode (.pyc) e aí pode pegar esse bytecode e jogar em qualquer plataforma que possua 
uma máquina virtual Python: Windows, Mac, Linux e outros. Sem precisar recompilar. É o mesmo código. 
 
 
Outro motivo da versatilidade da linguagem é o fato de ser multiparadigma. 
Peraí! Multi o quê, professor? 
Multiparadigma. Significa que Python suporta vários paradigmas de programação como a funcional, 
imperativa, procedural e orientada a objeto. Mnemônico FIPO. 
Multiparadigma em Python 
F Funcional 
I Imperativa 
P Procedural 
O Orientada a Objeto 
 
Prof. Hamilton Rodrigues 
 
 
6 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Todas essas qualidades fazem com que o Python seja empregado nas mais variadas aplicações, desde 
desenvolvimento de games, sistemas do mercado financeiro, sites Web, análise de dados, estatística, pesquisa 
científica, etc. O motor de busca do Google, por exemplo, é grande parte escrito em Python. As aplicações que 
mais têm fomentado o crescimento da linguagem ultimamente são a análise de grandes bases de dados (Big 
Data), machine learning e inteligência artificial. 
O Python tem uma biblioteca padrão muito rica que estende a funcionalidade da tecnologia tornando-a 
uma linguagem poderosa, um verdadeiro “canivete suíço”. A biblioteca padrão já vem incluída no pacote Python 
e contém classes e funções prontas para o seguinte: processamento de texto, manipulação de estruturas de dados 
compostas, funções matemáticas complexas, programação funcional, acesso a diretórios e arquivos em disco, 
persistência de dados em bancos de dados, compressão de arquivos, arquivamento, exportação de dados para 
formatos específicos como CSV, criptografia, acesso a serviços do sistema operacional, programação paralela, 
comunicação em redes, processamento de mark-up (HTML, XML, ...), suporte a protocolos de internet, serviços 
multimídia, desenvolvimento de interfaces gráficas, dentre outros. Ufa! 
Além da biblioteca padrão, existem inúmeras bibliotecas de terceiros com muita coisa pronta para facilitar 
a vida do desenvolvedor. Qualquer pessoa, empresa, universidade, órgão público pode desenvolver uma biblioteca 
Python e licenciá-la para a comunidade de desenvolvedores. 
Em diversas linguagens, existe a figura dos delimitares de início e fim de bloco de comandos. Normalmente 
esses delimitadores são as chaves ({ }) ou o begin/end. Nesse ponto, Python é bem diferente das demais porque 
não usa delimitadores para marcar os blocos de comandos. O que define os blocos em Python é a indentação. Por 
isso, é de fundamental importância indentar corretamente o código. 
Indentar nada mais é que tabular as instruções corretamente. Veja no código abaixo que o print da linha 5 
está deslocado uma tabulação para a direita. Esse comando está indentado. Ao indentar, você está dizendo que 
esse print da linha 5 só deve ser executado se cair no if. Da mesma forma, ao indentar o print da linha 7 você está 
dizendo que esse print é pra executar somente se cair no else. Em outras linguagens, como por exemplo o R que 
veremos na próxima aula, a indentação não é obrigatória porque elas têm os delimitadores ({} ou begin/end). Em 
Python é obrigatório indentar. 
 
 
 
Python é uma linguagem de tipagem dinâmica e forte. Tipagem dinâmica porque o tipo da variável é 
descoberto pelo interpretador somente no momento da execução. Não é necessário definir a priori os tipos das 
variáveis. Como o tipo é descoberto somente em tempo de execução, ele pode mudar dinamicamente ao longo 
do programa. Tipagem forte implica que não se podem misturar tipos incompatíveis. 
 
Prof. Hamilton Rodrigues 
 
 
7 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Características de tipagem das variáveis PythonTipagem dinâmica 
O tipo de variável pode mudar ao longo 
do programa 
Tipagem forte 
Não pode fazer operações com tipos 
incompatíveis 
Para definir uma função em Python, usamos a palavra reservada def seguido do nome da função e de uma 
lista opcional de argumentos separados por vírgulas. Exemplo: def calculaIMC(peso, altura) é uma declaração 
válida de uma função chamada calculaIMC que recebe 2 parâmetros: peso e altura. 
Observe o seguinte trecho de código para calcular o IMC (Índice de Massa Corporal) de uma pessoa a partir 
do seu peso e altura. 
 
 
 
 
Repararam que o código Python é bem enxuto? Não precisamos definir explicitamente os tipos das variáveis. 
Além disso, esses tipos podem mudar dinamicamente ao longo do programa, o que dá flexibilidade. Apesar de ter 
tipagem dinâmica, não podemos “abusar”. Se misturar tipos incompatíveis (como na linha 11) dá erro. 
Também não é necessário demarcar o início e o fim do bloco de comandos dentro do corpo da função 
calculaIMC (linhas 2 e 3). Isso foi definido pela indentação. 
Já dissemos anteriormente que Python é multiparadigma porque suporta programação funcional, 
imperativa, procedural e orientada a objeto (FIPO). Desses 4 paradigmas, o preponderante é a orientação a objeto 
a ponto de tudo na linguagem ser um objeto. 
Como assim “tudo é um objeto” professor? 
 
Declaração da função e de seus respectivos argumentos. Não é necessário 
definir os tipos dos argumentos. Eles serão descobertos em tempo de execução. 
Também não é necessário definir o tipo da variável imc. 
Somente na hora de invocar a função, o interpretador descobrirá que os 2 
argumentos da função (peso e altura) são do tipo numérico e somente após 
o retorno da função saberá que meuIMC também é numérico. 
A tipagem é dinâmica. Isso significa que pode mudar dinamicamente ao longo 
do programa. Esta conversão de meuIMC para um tipo string é válida. 
Somente neste ponto o programa dá erro! O tipo de meuIMC passou a ser 
string na linha 8. A operação realizada na linha 11 não é possível com tipo 
string. Não pode misturar tipos incompatíveis pois a tipagem é forte. 
Prof. Hamilton Rodrigues 
 
 
8 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Objetos são estruturas compostas de atributos e métodos (funções). Quando dizemos que tudo em Python 
são objetos estamos dizendo que tudo tem atributos e métodos e pode ser passado como uma variável ou como 
argumento para uma função. Tudo mesmo, incluindo os tipos primitivos, as funções e até os comentários do 
código. Vamos clarear isso. 
Iremos definir uma função simples chamada calculaMedia e dentro dela colocar um comentário de 
documentação """esta função calcula a média entre arg1 e arg2""". Como dissemos, a função em Python 
também é um objeto. Um dos atributos desse objeto armazena justamente esse comentário. Podemos recuperar 
o atributo comentário com o comando da linha 7. Repare que a função calculaMedia é um objeto que é passado 
como parâmetro para a função inspect.getdoc(). A saída do print da linha 8 será exatamente o texto de comentário 
que definimos dentro da função. 
 
Da mesma forma que obtivemos o atributo comentário do objeto função, poderíamos ter obtido outros 
atributos como o código-fonte da função, o nome da função, as variáveis internas, etc. O fato de tudo ser objeto 
em Python abre um leque de possibilidades para o programador. Não se preocupe se você não entendeu alguma 
parte do trecho de código acima. Vamos entrar em todos os detalhes da linguagem mais à frente nesta aula. 
 
Caso queira escrever e rodar seus próprios programas em Python existem inúmeros softwares. Recomendo o Thonny, uma 
IDE gratuita muito simpática, simples de usar e voltada para quem está aprendendo a linguagem. Ele pode ser baixado em 
thonny.org. Tem versão para Windows, Mac e Linux. 
 
O Thonny pode ser uma ferramenta útil para concurseiros! Você pode copiar o código do enunciado de uma questão, colar 
no Thonny e mandar ele executar. Dentro dele, dá para executar o programa passo a passo, inspecionar as variáveis, obter 
ajuda, etc. 
É só para a fase de aprendizado e tirada de dúvidas específicas da linguagem. Na hora da prova, não terá essa facilidade. Por 
isso é importante estudarmos o funcionamento da linguagem nesta aula. 
http://thonny.org/
Prof. Hamilton Rodrigues 
 
 
9 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Tipos de dados 
A biblioteca padrão do Python inclui alguns tipos de dados núcleo que são nativos da linguagem. Lembre-se 
que tudo é objeto. Portanto, todos esses tipos, até os mais primitivos, também são objetos. 
Tipo Descrição Exemplos 
Números 
Inclui tipos numéricos como inteiros, 
reais, imaginários, hexadecimais, 
booleanos, entre outros. 
123, 3.1415, 1+2j, 0x9ff, True, False 
Strings Cadeias de caracteres. “laranja”, “maçã”, “José1” 
Listas 
Sequência mutável de objetos de 
tamanho variável. 
[1, 2, “João”], [“login”,”senha”], 
[234, [12.5, “spam”], 9+3j] 
Dicionários 
Estrutura de dados de mapeamento de 
uma chave em um valor. 
{“laranja” : 5.00, “maçã” : 7.40} 
{“love” : “amor”, “book” : “livro”} 
Tuplas 
Sequência imutável de objetos. Seus 
valores não podem mudar. 
(1, “gato”, 15.45) 
Arquivos 
Referência para o conteúdo de arquivos 
em disco 
open(‘C:\meuarquivo.txt’) 
Conjuntos 
Sequência não ordenada de objetos 
únicos. O conjunto em si é mutável, mas 
seus elementos são imutáveis. 
{‘a’, ‘b’, ‘c’} 
{1, 12.3, 45, “New York”} 
None 
Representa o nada. Equivalente ao null 
em outras linguagens. 
None 
Outros 
Funções, módulos e classes também são 
tipos. 
 
 
 
 
Prof. Hamilton Rodrigues 
 
 
10 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Coleções 
Os 3 tipos principais de coleções em Python são as listas, as tuplas e os dicionários. É importante distinguir 
bem as características de cada um desses tipos estruturados. 
Coleção 
Pode substituir os valores 
dos elementos? 
Pode acrescentar/remover 
elementos? 
Forma de indexação dos 
elementos 
Lista Sim Sim Inteiro 
Tupla Não Não Inteiro 
Dicionário Sim Sim String 
 
Veja exemplos de como indexar coleções corretamente. Os elementos das listas e das tuplas são 
referenciados por um índice inteiro. Já os elementos de um dicionário são indexados pela chave, que é um string. 
 
 
 
Manipulação de listas 
As listas são outro recurso poderoso do Python. Elas podem conter elementos de qualquer tipo de objeto: 
números, strings, outras listas, etc. Seus elementos podem ser mutáveis, isto é, modificáveis. A lista em si também 
é mutável, pode ter seu tamanho aumentado ou reduzido e a ordem dos seus elementos rearranjada. 
Os elementos de uma lista na maior parte das vezes são acessados colocando o índice desejado entre 
colchetes. O índice do 1º elemento é 0 (zero). Os índices andam “para a frente” e “para trás”. Explicando melhor, 
você pode acessar o último elemento com o índice -1, o penúltimo com -2 e por aí vai. 
 
As listas são mutáveis. É possível alterar o valor dos seus elementos, inserir novos elementos, remover e 
reordenar. 
Imprime “Coca Cola”, o elemento de lista cujo índice é 1 
Imprime 9, o elemento do dicionário cuja 
chave é “matemática” 
Prof. Hamilton Rodrigues 
 
 
11 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
 
 
Trabalhando com ranges 
Uma função recorrentemente cobrada em concursos é a range. Range em inglês é intervalo. E a ideia é essa 
mesmo. Essa função serve para gerar automaticamente uma sequência de números inteiros entre um intervalo. 
Funciona da seguinte forma. 
 
start: (opcional) Indica o 1º número da sequência. Default = 0. 
stop: (mandatório) Limite superior da sequência, não inclusive. 
step: (opcional) Incremento. Default = 1. 
 
O retorno da função range é um objeto sequencial da classe range, masnão é uma lista. Para transformar o 
range em lista utilize a função list() como no trecho abaixo. 
 
 
 
É preciso ficar atento para o fato de a função range retornar um objeto do tipo range e não uma lista. As 
bancas de concurso cobram isso. Veja a questão abaixo. 
 
Gera um objeto range de 0 a 4 com incremento de 1. 
O stop = 5 é não-inclusive. Por isso para 1 casa antes, no 4. 
Transforma o range na lista [0, 1, 2, 3, 4] 
Gera um objeto range de 1 a 11 com incremento de 2. 
O stop = 12 é não inclusive. Por isso para 1 casa antes, no 11. 
Transforma o range na lista [1, 3, 5, 7, 9, 11] 
Prof. Hamilton Rodrigues 
 
 
12 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
(VUNESP - 2017 - TJM-SP - Técnico de Comunicação e Processamento de Dados) 
Considere o seguinte código no Python 3.5: 
 x = range(10) 
O tipo da variável “x”, após a execução do código, é 
(a) classe ‘set’. 
(b) classe ‘tuple’. 
(c) classe ‘list’. 
(d) classe ‘range’. 
(e) classe ‘iter’. 
RESOLUÇÃO 
O retorno de range(10) é um objeto da classe range que representa o intervalo [0,1,2,3,4,5,6,7,8,9]. Não é uma 
lista! É um range. 
Resposta: D 
 
 
Prof. Hamilton Rodrigues 
 
 
13 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Mais uma questão, agora para você entender o funcionamento do range. 
(FGV - 2018 - AL-RO - Analista Legislativo - Infraestrutura de Redes e Comunicação) 
Analise o código Python a seguir. 
 
Assinale a opção que indica o número de valores printados na execução desse código. 
(a) Zero 
(b) Um 
(c) Dois 
(d) Quatro 
(e) Cinco 
RESOLUÇÃO 
Lembrando a assinatura do método range: 
 
O 1º parâmetro do range é start = 0 
O 2º parâmetro é o stop = 4 
O 3º parâmetro é o step = -1 (step = incremento) 
Com esses parâmetros start e incremento, a sequência seguiria o seguinte caminho: [0, -1, -2, -3, -4, -5, ...] 
Desse jeito não vai chegar nunca no stop = 4. Se fosse uma outra linguagem de programação poderíamos entrar 
aqui em um loop infinito com consequente estouro de memória. Mas a função range do Python é “inteligente” e 
nesse caso o range retornado é uma sequência vazia pela impossibilidade de chegar no stop = 4 partindo do start 
= 0 e decrementando de -1 em -1. 
Desta forma, o for não realiza nenhum loop e consequentemente o print nunca é chamado. 
Resposta: A 
 
Manipulação de strings 
Strings podem ser representadas tanto com aspas simples quanto com aspas duplas. É a mesma coisa. Tem 
também as aspas triplas, para quando a string tem mais de 1 linha. 
 
Prof. Hamilton Rodrigues 
 
 
14 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Você pode concatenar strings com o operador + e obter repetições com o *. No código abaixo, o print da 
linha 5 retorna “Michael Jordan “ e o da linha 8 “Michael Michael Jordan Jordan Jordan ”. 
 
Existem diversas funções prontas para facilitar operações com strings como obter o seu tamanho (len), 
encontrar ocorrências dentro dela (find), quebrar (split). 
 
 
 
As strings em Python são imutáveis! Na linha 9 acima, quando você aplica a função split sobre a string 
citacao, a citacao fica intacta (imutável) e é gerado um retorno com o resultado do split. 
Outros exemplos de funções da biblioteca padrão úteis para manipular strings: swapcase, strip e replace. 
 
 
 
Imprime 37, o número de caracteres da string citacao 
Imprime 6, o índice da 1ª ocorrência de “aim” 
Imprime uma lista com as subpartes de citacao 
quebradas pelo separador ‘;’ (ponto e vírgula): 
[“Small aim is a crime”, “have great aim”] 
Imprime um string com os caracteres invertidos. 
Maiúscula vira minúscula e vice-versa. 
“ rEPÚBLICA fEDERATIVA dO bRASIL “ 
Retira os espaços do início e do fim do string. 
“República Federativa do Brasil“ 
Substitui um texto pelo outro. 
“República Federativa da Argentina“ 
Prof. Hamilton Rodrigues 
 
 
15 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Operadores 
Vamos dar uma olhada nos operadores em Python. 
Operadores numéricos 
São aplicados sobre os tipos numéricos e retornam também um número. 
Operação Descrição 
X + Y Adição 
X - Y Subtração 
X * Y Multiplicação 
X / Y Divisão 
X ** Y Exponenciação 
 
Operadores relacionais e booleanos 
Retornam True ou False. 
Operação Descrição 
X < Y Menor 
X <= Y Menor ou igual 
X > Y Maior 
X >= Y Maior ou igual 
X == Y Igual 
X != Y Diferente 
X is Y Testa se X e Y são o mesmo objeto 
X is not Y Testa se X e Y não são o mesmo objeto 
X < Y < Z Comparação tripla 
not X Inverte o valor lógico de X 
 
Prof. Hamilton Rodrigues 
 
 
16 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Alguns exemplos de uso dos operadores relacionais. 
 
Operadores sequenciais 
Apropriados para trabalhar com sequências (strings, listas e tuplas). 
Operação Descrição 
X in S Verifica se o elemento X pertence à 
sequência S 
X not in S Verifica se o elemento X não pertence à 
sequência S 
S1 + S2 Concatena as sequências S1 e S2 
n * S Repete n vezes a sequência S 
S[i:j] Fatia a sequência S entre os índices i e j 
len(S) Retorna o tamanho de S 
min(S) Retorna o mínimo elemento de S 
max(S) Retorna o máximo elemento de S 
for X in S Percorre todos os elementos de S 
armazenando o elemento corrente em X 
del S[i] Deleta o elemento localizado no índice i 
Prof. Hamilton Rodrigues 
 
 
17 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Você pode iterar dentro de uma sequência sem referenciar seus índices utilizando o operador for X in S. Veja 
como funciona. 
 
Nesse exemplo, são impressos em tela os nomes dos filmes que começam com a letra “C”: “Cidadão Kane” 
e “Casablanca”. 
 
Estruturas de decisão 
Como vimos na aula de Lógica de Programação, as estruturas de decisão servem para desviar o fluxo de 
execução do programa dependendo de uma condição. Python possui 3 estruturas de decisão: if, if-else e if-elif-
else. 
 
if 
O if é o mais simples. Só executa determinada ação se a condição for verdadeira. A sintaxe é a seguinte. Tem 
que colocar o “:” (dois pontos) após a condição. 
 
 
if-else 
O if-else é uma bifurcação. Se a condição de teste for verdadeira, executa o if, caso contrário executa o else. 
Observe o seguinte trecho. 
 
Neste caso, será executado somente o print da linha 6 porque a condição idade >= 18 é FALSA. 
if-elif-else 
O if-elif-else é um encadeamento de diversos caminhos possíveis. É como se fosse uma “escadinha”. Ele 
testa o 1º degrau, se for falso passa para o 2º, se for falso passa para o 3º e assim sucessivamente até o último 
degrau que é o else. O else só será executado se todas as condições anteriores forem falsas. 
Prof. Hamilton Rodrigues 
 
 
18 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
 
Na linha 3 definimos a primeira condição (idade < 12). Como o teste dá falso (pois idade é 65), o programa 
seguirá para o próximo teste elif na linha 6 sem executar o print(“criança”). Na linha 6 o teste também dá falso. 
Então pula o print(“adolescente”) e parte para o elif da linha 9. Na linha 9 novamente o elif dá falso. Ele pula o 
print(“adulto”) e segue para o else. Por fim, ele imprime “idoso”. 
Ele vai andando de degrau em degrau enquanto as condições testadas forem falsas. Se chegar num degrau 
em que a condição seja verdadeira, executa o bloco de comandos correspondente e sai da escada. Não passa 
para o próximo degrau. 
 
 
 
Prof. Hamilton Rodrigues 
 
 
19 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Estruturas de repetição 
Estruturas de repetição permitem que determinado bloco de instruções seja executado repetidamente 
segundo certos critérios. São também conhecidos como laços ou loops. Em Python, temos as seguintes estruturasde repetição. 
Estrutura de repetição Finalidade 
for Executar repetidamente por um número 
determinado de vezes 
for-else Igual o for só que com um bloco else a 
ser executado obrigatoriamente após os 
loops 
while Executar repetidamente enquanto uma 
condição for verdadeira 
while-else Igual o while só que com um bloco else 
a ser executado obrigatoriamente após 
os loops 
 
for 
O for é usado quando se quer iterar sobre um bloco de código um número determinado de vezes. É muito 
utilizado para percorrer itens de uma coleção (listas, tuplas, strings, ...) e, para cada um dos itens, executar um 
bloco de código. 
 
No exemplo acima, o for vai executar o laço 4 vezes, 1 para cada elemento da lista cores. Em cada volta do 
loop ele irá fazer o print do elemento corrente da lista: "azul", "verde", "vermelho", "amarelo", nesta ordem. O 
comportamento seria o mesmo se a variável cores em vez de lista fosse um outro tipo de coleção como uma tupla, 
por exemplo. 
 
Lembrando que o string é uma coleção de caracteres. Portanto, é possível usar um for para iterar sobre os 
caracteres do string. Veja abaixo. 
 
Prof. Hamilton Rodrigues 
 
 
20 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
No exemplo acima, será impresso ‘o’, ‘i’, ‘i’, ‘a’, ‘e’, ‘e’, ‘a’, nessa ordem. Imprime somente as vogais dentro 
do string palavras. 
O for também é muito utilizado para iterar dentro de um intervalo definido por um range . No exemplo 
abaixo ele irá imprimir todos os números do range(8) que são os seguintes: 0, 1, 2, 3, 4, 5, 6, 7. 
 
 
Existem 2 palavras reservadas úteis pra usar dentro de loops, são elas o break e continue. 
O break faz com que o loop seja imediatamente encerrado, independentemente de ter percorrido todas as 
iterações previstas no for. No exemplo a seguir, só serão impressas as cores “azul” e “verde”. Isso ocorre porque 
quando chega no “verde” ele dá um break o que força a saída do loop for antes de seguir para os demais elementos 
da lista. 
 
 
O continue funciona de maneira parecida com a do break, porém, no lugar de encerrar o loop, ele faz com 
que todo o código que esteja abaixo (porém ainda dentro do loop) seja ignorado e avança para a próxima iteração. 
 
 
 
 
No trecho de código acima, só serão impressos os números ímpares dentro do range(10) que são 1, 3, 5, 7, 9. 
 
for-else 
O for-else nada mais é que um for com um bloco adicional else ao final. Depois de executar todas as iterações 
do for ele obrigatoriamente executa o bloco dentro do else 1 vez. 
 
O for percorre todo o range [0,1,2,3,4,5,6,7,8,9] e a cada 
iteração atribui o número atual à variável numero 
Se o número atual dividido por 2 der resto 0, ou seja, número atual 
for par, o continue obriga a pular para a próxima iteração do for 
pulando o comando subsequente (print) 
Só executa print se numero for ímpar porque nestes casos 
“escapa” do continue. 
Prof. Hamilton Rodrigues 
 
 
21 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
No exemplo acima, depois de imprimir todos os ímpares entre 0 e 10, ele imprime o texto "Terminei. Printei 
somente os ímpares". 
 
while 
O while é um loop que será executado repetidamente enquanto determinada condição for verdadeira. 
Observe o seguinte exemplo. 
 
 
 
Ele percorre os elementos da lista situacao e enquanto o elemento da lista é igual a “não passei” ele 
permanece no laço imprimindo a mensagem “Não vou desistir” e testando o próximo elemento. Isso é feito 3 
vezes. Quando ele chega no elemento “Passei !!!”, a condição deixa de ser verdadeira e ele sai do loop. 
Os comandos break e continue funcionam também dentro do while da mesma forma que no for. 
 
while-else 
O while-else é um while com um bloco adicional else no final que é executado obrigatoriamente após todas 
as iterações do while. É a mesma ideia do for-else só que com o while. 
 
 
 
Prof. Hamilton Rodrigues 
 
 
22 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Resumindo todas as estruturas de controle do Python. 
 
 
 
Funções 
As funções são declaradas usando a palavra reservada def seguido do nome da função e de uma lista 
opcional de argumentos. A título de exemplo, vamos escrever uma função para calcular as raízes da equação do 
2º grau. A função recebe os coeficientes a, b e c da equação 𝒂𝒙𝟐 + 𝒃𝒙 + 𝒄, aplica a fórmula conhecida como de 
Bhaskara 𝑥 =
−𝑏±√𝑏2−4𝑎𝑐
2𝑎
 e retorna as 2 raízes. Na linha 9 do código abaixo, no momento em que é feito o 
retorno, parece que a função está retornando 2 valores (raiz1 e raiz2). Na verdade, está retornando 1 valor só, 
uma tupla contendo os 2 elementos raiz1 e raiz2. 
 
Outras características da linguagem que podemos observar nesse código da função de Bhaskara é o 
parâmetro c=0 como argumento da função na linha 4. O =0 significa que 0 (zero) é o valor default para o 
parâmetro c caso não seja passado nenhum valor. 
Também é possível observar na linha 1 a importação da biblioteca matemática padrão do Python para, 
mais adiante nas linhas 6 e 7, poder utilizar a função sqrt e obter a raiz quadrada de delta. 
 
 
Imprime (3,2), uma tupla com as 2 raízes da equação 
Prof. Hamilton Rodrigues 
 
 
23 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Usando o pass 
Python tem a palavra reservada pass que é usada quando você deseja “passar” a implementação de uma 
função. 
Por exemplo, suponha que no meio do seu código você criou a assinatura da função minhaFuncao, mas não 
é o momento ainda de implementar o corpo dessa função. Para não dar erro de compilação, você pode colocar o 
pass. A função não vai fazer nada, mas não vai dar mais erro. É para implementação futura. 
 
 
Classes 
No tópico anterior, relativo a funções, vocês repararam que a função bhaskara estava “solta” no código? 
Isso é possível em Python porque é suportado o paradigma procedural em que o código não possui classes e os 
métodos podem ficar desta forma, fora do contexto de uma classe. 
Entretanto, Python também suporta o paradigma de programação orientada a objetos. Neste caso, as 
funções são métodos pertencentes a uma classe. 
 
 
Pessoal, a tecnologia Python é extensa. O que vimos até agora são os principais conceitos e recursos da 
linguagem. Tem muito mais além disso. Para efeito do nosso objetivo, que é ser aprovado em concurso, o mais 
produtivo é partir para resolver questões. Então vamos lá! 
 
Declaração da classe Cachorro 
O atributo tipo é de classe, comum a todas as instâncias da classe Cachorro 
Instanciação de 2 classes do tipo Cachorro 
Definição do método construtor da classe __init__ 
A variável self é utilizada como convenção pelo Python para referenciar 
atributos de instância. Neste caso, o atributo nome é de instância. 
Imprime “Canino” porque o valor de tipo é comum a todas as classes 
Imprime “Bob” porque o valor de nome é específico do objeto 
Imprime “Canino” porque o valor de tipo é comum a todas as classes 
Imprime “Rex” porque o valor de nome é específico do objeto 
Prof. Hamilton Rodrigues 
 
 
24 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Questões comentadas pelo professor 
1. (IF-MT - 2018 - IF-MT - Informática) 
Sobre a linguagem Python, é INCORRETO afirmar que: 
(a) Suporta os paradigmas: imperativo, orientado a objetos e funcional. 
(b) Utiliza indentação para delimitar início e fim de blocos. 
(c) A linguagem Python é distribuída sob licença que proíbe sua incorporação em produtos proprietários. 
(d) Python é uma linguagem de tipagem dinâmica e forte. 
(e) Python é um software de código aberto. 
RESOLUÇÃO: 
(a) Suporta os paradigmas: imperativo, orientado a objetos e funcional. 
Lembrando o nosso mnemônico FIPO: funcional, imperativo, procedural e orientado a objeto. A 
alternativa mencionou só os paradigmasimperativo, orientado a objetos e funcional, mas está correta. 
Quem pode mais, pode menos. 
 
(b) Utiliza indentação para delimitar início e fim de blocos. 
Correto. Não temos delimitadores de blocos em Python. Basta indentar corretamente. 
 
(c) A linguagem Python é distribuída sob licença que proíbe sua incorporação em produtos proprietários. 
Errado! A licença do Python permite que seja incorporada em um produto proprietário. 
 
(d) Python é uma linguagem de tipagem dinâmica e forte. 
Correto. Vimos isso no exemplo do cálculo do IMC no início da parte teórica desta aula. 
 
(e) Python é um software de código aberto. 
Correto. Python é licenciado segundo a Python Software Foundation License (PSFL), um tipo de licença 
de código aberto. 
Resposta: C 
2. (FCC - 2018 - MPE-PE - Analista Ministerial - Informática) 
Considere o fragmento de código Python abaixo. 
 
Para que o código seja compilado e executado corretamente, a lacuna I deverá ser preenchida com 
Prof. Hamilton Rodrigues 
 
 
25 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
(a) __init__(self, nome, renda): 
(b) function __init(self, nome, renda): 
(c) def __construct(self, nome, renda): 
(d) def __init__(self, nome, renda): 
(e) Cliente(self, nome, renda): 
RESOLUÇÃO: 
O self é utilizado para referenciar atributos de instância da classe. Portanto, os atributos nome e renda da classe 
Cliente são específicos do objeto instanciado. As atribuições que são feitas no bloco de construção destacadas são 
típicas de um construtor. Em Python, para definir corretamente o método construtor usa-se a sintaxe def 
__init__(self,<atributos de instância>):. 
No nosso caso concreto, o construtor seria def __init__(self,nome,renda):. É o que se encaixa corretamente na 
lacuna I. 
 
Resposta: D 
3. (IF-MT - 2018 - IF-MT - Informática) 
Considere o seguinte fragmento de código fonte, escrito em linguagem python: 
a = 3 
b = a * 2 
a, b = b, a 
Após a execução de todos os comandos, qual é o resultado apresentado pelo comando abaixo? 
print(a) 
(a) 3 
(b) 6 
(c) 36 
(d) 63 
(e) a 
RESOLUÇÃO: 
Na 1ª linha, a = 3 
Na 2ª linha, b = 6 
Na 3ª linha (a,b) = (b,a) = (6,3) 
Bloco de comandos de construção 
Prof. Hamilton Rodrigues 
 
 
26 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Na 3ª linha, é feita uma atribuição dupla em que a recebe b e b recebe a. 
Assim, o print(a) irá imprimir 6. 
Resposta: B 
4. (CESPE - 2018 - Polícia Federal - Agente de Polícia Federal) 
Considere o programa a seguir, na linguagem Python. 
 
A sintaxe do programa está correta e, quando executado, ele apresentará o seguinte resultado. 
PF 
RESOLUÇÃO: 
A sintaxe do programa está incorreta, o operador == significa um teste de comparação “igual a”. Para atribuir a 
lista [“P”, “F”] à variável letras deveria ser usado o operador =. 
Resposta: Errado 
5. (CESPE - 2018 - Polícia Federal - Perito Criminal Federal - Conhecimentos Básicos - Todas as Áreas) 
Considere os seguintes comandos na programação em Python. 
 
Esses comandos, quando executados, apresentarão o resultado a seguir. 
 
RESOLUÇÃO: 
A função strip elimina os espaços no início e fim do string. Fazer a.strip() daria como saída o string “Hello, World!”. 
É muito importante você gravar que, em Python, o string é imutável. Se, após fazer o strip, você chamar a[0] o 
string a é o string original da linha 1, antes do strip. Portanto a[0] retornará o 1º caractere do a que é um espaço 
a[0] = ‘ ‘. E a(1) = ‘H’. 
Resposta: Errado 
 
Prof. Hamilton Rodrigues 
 
 
27 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
6. (CESPE - 2018 - Polícia Federal - Agente de Polícia Federal) 
Considere o programa a seguir, na linguagem Python. 
 
A sintaxe do programa está correta e, quando executado, ele apresentará o seguinte resultado. 
 
RESOLUÇÃO: 
Tem 2 erros de sintaxe neste programa. 
O if em Python, após o teste condicional 5 > 2, deveria vir : (dois pontos). 
Não se usam as chaves para delimitar bloco de comandos em Python. Basta indentar. Esse é o outro erro de 
sintaxe. 
Resposta: Errado 
7. (FGV - 2018 - AL-RO - Analista Legislativo - Banco de Dados) 
Considere a aplicação do algoritmo de busca binária sobre um conjunto de chaves distintas. 
Assinale a declaração Python que define uma lista L sobre a qual esse algoritmo não pode ser aplicado 
diretamente. 
(a) L=[0,1,2,3,5,8,13,21] 
(b) L=[0] 
(c) L=[“MARIA”, “MARINA”, “MARIO”] 
(d) L=[-1,-2,-3,-4,-5] 
(e) L=[“MARIA”, “MARIO”, “MARINA”] 
RESOLUÇÃO: 
Pessoal, vimos na aula de Lógica de Programação que, para o algoritmo de busca binária funcionar, a lista a ser 
buscada deve estar previamente ordenada. 
As listas das alternativas (a) e (b) estão ordenadas na ordem numérica crescente. Correto. 
A lista (c) está ordenada na ordem alfabética crescente. Correto. 
A lista (d) está na ordem numérica decrescente. Correto. 
A única que está desordenada é a alternativa (e). 
Resposta: E 
 
Prof. Hamilton Rodrigues 
 
 
28 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
8. (FGV - 2018 - AL-RO - Analista Legislativo - Banco de Dados) 
Analise o código Python a seguir. 
 
Assinale o que acontece com esse código quando o comando Run Module (F5) é acionado na interface IDLE 
(Python GUI). 
(a) Os valores [1, 2, 3, 4, 5, 6] são exibidos. 
(b) Os valores [1, 2, 2, 4, 8, 32] são exibidos. 
(c) Os valores [1, 1, 2, 6, 24, 120] são exibidos 
(d) Um erro de compilação 
(e) Um erro de execução 
RESOLUÇÃO: 
Galerinha, lembrem-se que a função len(L) retorna o tamanho da lista L, que L[-1] referencia o último elemento 
da lista e que L.append(x) insere um novo elemento x no final da lista L. 
No início, L = [1]. Logo, len(L) = 1. 
Ele chega no while e faz o teste. len(L) < 6 ? Verdadeiro porque len(L) = 1. 
Então entra na 1ª iteração do while. 
Na 1ª iteração é feito L.append(L[-1]*len(L)) = L.append(1 * 1) = L.append(1) = [1, 1]. 
Na 2ª iteração é feito L.append(L[-1]*len(L)) = L.append(1 * 2) = L.append(2) = [1, 1, 2]. 
Na 3ª iteração é feito L.append(L[-1]*len(L)) = L.append(2 * 3) = L.append(6) = [1, 1, 2, 6]. 
Na 4ª iteração é feito L.append(L[-1]*len(L)) = L.append(6 * 4) = L.append(24) = [1, 1, 2, 6, 24]. 
Na 5ª iteração é feito L.append(L[-1]*len(L)) = L.append(24 * 5) = L.append(120) = [1, 1, 2, 6, 24, 120]. 
 
A 6ª iteração do while não ocorre porque a essa altura len(L) < 6 deixa de ser verdade pois len(L) = 6. E a nossa lista 
L mutável ao final será [1, 1, 2, 6, 24, 120]. 
Resposta: C 
 
Prof. Hamilton Rodrigues 
 
 
29 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
9. (COPEVE-UFAL - 2016 - UFAL - Analista de Tecnologia da Informação (Edital nº 30)) 
O trecho de código Python é uma função recursiva para o cálculo do fatorial de um número natural qualquer. 
Entretanto, apresenta um erro de programação. 
 
Em qual linha está o erro e como consertá-lo para que a função cumpra corretamente o seu propósito? 
(a) o código deveria ser “if (n == 1):” na linha 2. 
(b) o código deveria ser “return 0” na linha 3. 
(c) o código deveria ser “if (n == 1) and (n == 0):” na linha 2. 
(d) o código deveria ser “return Fatorial(n - 1) * n;” na linha 5. 
(e) o código deveria ser “return Fatorial(n) * n -1;” na linha 5. 
RESOLUÇÃO: 
O trecho de código tenta programar o cálculo do fatorial. 
Matematicamente, a definição de Fatorial(n) = n*(n-1)*(n-2)*...*2*1. 
Programaticamente podemos usar recursividade para fazer esse cálculo Fatorial(n) = n*Fatorial(n-1). Letra D. 
O trecho do enunciado está errado. Só funciona para n = 0, n = 1, n = 6 e n = 7. Para os demais valores de entrada, 
o cálculo sai errado. 
Resposta: D 
10. (IF-MT - 2018 - IF-MT - Informática) 
Considere o seguinte fragmento de código fonte escrito na linguagem python: 
 
Apósa execução de todos esses códigos, qual é o valor a ser mostrado mediante o comando abaixo? 
 
(a) 0 
(b) 1 
(c) 3 
(d) 6 
(e) 9 
Prof. Hamilton Rodrigues 
 
 
30 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
A função foo é bem simples. Ela triplica o valor do parâmetro que recebe. 
O parâmetro b nas 3 chamadas foo(b) é passado por valor. Isso significa que ele será triplicado dentro do contexto 
da função. Fora, ele permanece com o valor original, que é 1. Portanto, ao fazer o print(b) no final é impresso 1. 
Resposta: B 
11.(FGV - 2018 - AL-RO - Analista Legislativo - Análise e Desenvolvimento de Sistemas) 
Assinale o código Python que cria um novo arquivo, contendo uma linha. 
(a) 
 
 (b) 
 
(c) 
 
 (d) 
 
(e) 
 
 
 
RESOLUÇÃO: 
A forma correta de criar o arquivo é por meio da função open(“teste.txt”,”w”). 
“teste.txt” é o nome do arquivo que será criado. O argumento “w” significa que o arquivo será aberto para escrita 
(writing). Se o arquivo “teste.txt” já existir no diretório corrente, ele será apagado e sobrescrito. Se não, será 
criado vazio pronto para escrita. 
O f.write(“Linha de teste\n”) escreve 1 linha no arquivo com o texto “Linha de teste\n”. O “\n” no final significa 
pulo de linha. 
Resposta: A 
 
Prof. Hamilton Rodrigues 
 
 
31 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
12. (FGV - 2018 - AL-RO - Analista Legislativo - Análise e Desenvolvimento de Sistemas) 
Analise o código Python a seguir. 
 
O comando de execução desse código produz 
(a) erro de sintaxe. 
(b) erro de execução. 
(c) a exibição do número 12 somente. 
(d) a exibição de dois números, 14 e 12, nessa ordem. 
(e) a exibição de três números, 18, 12 e 10, nessa ordem. 
RESOLUÇÃO: 
Vamos analisar o código passo a passo. 
 
 
 
O range do enunciado (linha 3) é bem atípico, talvez para levar o candidato desavisado a marcar as alternativas 
“erro de sintaxe” ou “erro de execução”. A verdade é que esse range, apesar de estranho, é válido. 
Lembre-se dos parâmetros do range. 
 
Pelo range do nosso código do enunciado (linha 3 do código), start = -1. Como vimos anteriormente, Python 
permite que uma lista seja referenciada com índices negativos. O 1º índice de uma lista é sempre 0 (zero) e start = 
-1 significa que o índice anda uma casa à esquerda indo parar do outro lado da lista, na última posição. Portanto 
nosso range começa na última posição de L1. 
O incremento = -1 significa que a lista será percorrida de trás para a frente, decrementando o índice. 
Já o stop é igual a -len(L1). Como len(L1) é o comprimento da lista L1, -len(L1) = -7. Logo, stop = -7. Isso significa 
que o stop do nosso range é na casa imediatamente antes do índice -7, que é o -6. Lembre-se que o stop é não-
inclusive! 
Declaração e inicialização de 2 listas: L1 e L2 
Bloco de repetição do for 
Laço de repetição for no intervalo definido por range(-1, -len(L1), -1) 
Lembrando a ordem dos parâmetros do range: range(start, stop, incremento) 
Logo, start = -1 
stop = -len(L1) = - tamanho da lista L1 = -7 
incremento = -1 
Prof. Hamilton Rodrigues 
 
 
32 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Resumindo nosso range, ele percorre a lista L1 iniciando na última posição (start = -1), anda da direita para a 
esquerda de 1 em 1 (incremento = -1) até parar no índice -6 (stop = -7). 
Desta forma, o range vai percorrer os seguintes índices: [-1, -2, -3, -4, -5, -6] 
Na linha 4 do código, é feita uma referência a L2[-5:-2]. Isso também é um range. Ele está selecionando uma 
subparte da lista L2 entre os índices -5 (inclusive) e -2 (exclusive). Assim L2[-5:-2] = [10,12,14]. 
Entendido como os ranges de L1 e L2 irão funcionar, vamos executar o laço for passo a passo com a variável de 
controle k. 
k if L1[k] in L2[-5:-2] : print(L1[k]) 
-1 [20] in [10,12,14] ? FALSO Não faz nada 
-2 [18] in [10,12,14] ? FALSO Não faz nada 
-3 [15] in [10,12,14] ? FALSO Não faz nada 
-4 [14] in [10,12,14] ? VERDADEIRO print(14) 
-5 [13] in [10,12,14] ? FALSO Não faz nada 
-6 [12] in [10,12,14] ? VERDADEIRO print(12) 
Portanto, seria impresso o 14 e o 12, nessa ordem. O gabarito oficial da questão é esse, letra D. 
Obs.: Essa questão caiu em 2018, mas parece que o avaliador ainda está na versão antiga do Python. No Python 2, 
podíamos fazer a chamada print L1[k] que funcionava normalmente. No Python atual (versão 3) isso dá um erro 
de sintaxe. No Python 3, print é uma função. A forma correta de chamar o print atualmente é print(L1[k]). 
Resposta: D 
 
Prof. Hamilton Rodrigues 
 
 
33 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
13. (FGV - 2018 - AL-RO - Analista Legislativo - Infraestrutura de Redes e Comunicação) 
A execução do código Python a seguir termina com sucesso, mostrando a lista de números dispostos em ordem 
crescente corretamente. 
 
Assinale a opção que indica o valor exibido pelo primeiro comando print 
(a) 0 
(b) 1 
(c) 8 
(d) 16 
(e) 64 
RESOLUÇÃO: 
Galera, já vimos o funcionamento do algoritmo Bubble Sort anteriormente na aula de Lógica de Programação. O 
objetivo desse algoritmo é ordenar uma sequência de números desordenada. O código do enunciado implementa 
esse algoritmo corretamente em linguagem Python. 
Mas para matar a questão, temos que nos atentar aos detalhes. 
 
Definição da função de ordenação. 
Argumento de entrada da função de ordenação 
é a lista a ser ordenada chamada de numeros 
Muita calma nessa hora. O retorno da função de ordenação é 
o valor da variável de nome trocas, que não representa o 
número de trocas realizado na lista. 
Lista desordenada. 
Imprime o retorno de bubbleSort que é o valor de trocas 
Incremento da variável trocas 
Prof. Hamilton Rodrigues 
 
 
34 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
A função bubbleSort ordena corretamente a lista numeros recebido como argumento. O problema é a variável 
trocas. Apesar do nome, ela não reflete o número efetivo de trocas realizado pelo Bubble Sort. Se fosse o número 
de trocas do Bubble Sort seria 1, somente a troca do 94 pelo 93 para a lista numeros ficar ordenada. 
Pelo código que está escrito, a variável trocas ao final da execução armazenará um outro valor. Vamos lá, passo a 
passo. 
No início, trocou = True, então ele entra a 1ª vez no while. 
O range do for é [0, 1, 2, 3, 4, 5, 6, 7]. Como o incremento do trocas ocorre dentro desse for, trocas será 
incrementado 8 vezes ficando trocas = 8 após as 8 repetições do 1º for. O if dá verdadeiro 1 vez somente, quando 
chega no 94 que é menor que o elemento subsequente 93. É realizada a troca de 94 por 93 e a variável trocou é 
modificada para True. 
Como trocou = True, entra a 2ª vez no while. Nesta passagem, o range do for é o mesmo que na passagem 
anterior. Então a variável trocas será incrementada 8 vezes de novo. Como o valor anterior de trocas era 8, após 
os 8 novos incrementos vai a 16. Após isso, não ocorre mais troca, trocou = False e a função é finalizada. 
Portanto, a função bubbleSort retornará o valor final de trocas = 16. 
Resposta: D 
14. (Quadrix - 2019 - CRA-PR - Analista Sistema I) 
Julgue o item quanto à programação orientada a objetos e à linguagem de programação Python. 
Um recurso bastante útil da Python consiste no tratamento posicional das strings. Elas são consideradas 
como sequências mutáveis e podem ter sua ordem (sequência) alterada da esquerda para a direita ou vice‐versa, 
dependendo da função do programa. 
RESOLUÇÃO: 
A 1ª frase está correta: “Um recurso bastante útil da Python consiste no tratamento posicional das strings.”. 
O erro está na 2ª frase quando o avaliador diz que as strings são consideradas como sequências mutáveis. Isso não 
é verdade. As strings são imutáveis. Ao fazer qualquer manipulação em uma string,o Python copia e cria um novo 
objeto string com o resultado da manipulação e a string original permanece imutável. 
Resposta: Errado 
15. (PUC-PR - 2017 - TJ-MS - Técnico de Nível Superior - Analista de Infraestrutura de Rede) 
Dentre as seguintes funções, a que serve para converter um caractere único no seu respectivo valor inteiro em 
Python é 
(a) unichr (x) 
(b) hex (x) 
(c) ord (x) 
(d) oct (x) 
(e) chr (x) 
 
Prof. Hamilton Rodrigues 
 
 
35 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
(a) unichr (x) 
Esta função converte o código inteiro no caractere Unicode correspondente. Exemplo: unichr(99) = ‘c’ 
(b) hex (x) 
hex(x) converte o inteiro x no seu correspondente em representação hexadecimal. Ex.: hex(200) = 0xc8 
(c) ord (x) 
ord(x) o inverso do unichr(x). Dado um caractere x, o ord(x) converte-o para seu código inteiro Unicode 
correspondente. Ex.: ord(‘c’) = 99. É a alternativa correta. 
(d) oct (x) 
Converte um número inteiro no seu correspondente em representação octal. Ex.: oct(12) = 0o14. 
(e) chr (x) 
Converte o código inteiro no caractere correspondente. Ex.: chr(99) = ‘c’. É muito parecida com a função 
unichr(x). A única diferente é que unichr faz a conversão para todos os caracteres Unicode, que é uma lista 
bem mais ampla que os caracteres normais. Inclui também caracteres especiais. 
Resposta: C 
16. (FUNCERN - 2017 - IF-RN - Professor - Sistemas de Informação) 
Em relação às estruturas de controles da linguagem de programação Python, a palavra 
(a) pass tem o mesmo efeito que a palavra continue do C++. 
(b) elif vem acompanhada de parênteses e dois pontos. 
(c) null representa o tipo para objetos nulos. 
(d) else pode ser usada opcionalmente junto ao laço while ou for. 
 
RESOLUÇÃO: 
(a) pass tem o mesmo efeito que a palavra continue do C++. 
Vimos na parte teórica desta aula que o pass é uma palavra reservada em Python que serve para quando 
você define a assinatura de uma função, mas não deseja implementar o seu corpo, quer deixá-la vazia por 
enquanto. Não tem nada a ver com o continue. O continue no C++ tem a mesma função que o continue do 
Python. No meio de um laço, ele pula para a próxima iteração ignorando as instruções subsequentes dentro 
do bloco de repetição. Alternativa errada. 
(b) elif vem acompanhada de parênteses e dois pontos. 
Errado. Vimos que o elif é uma estrutura de seleção equivalente a um else-if. 
(c) null representa o tipo para objetos nulos. 
Errado. Em Python usa-se o None para representar objetos nulos. 
(d) else pode ser usada opcionalmente junto ao laço while ou for. 
Prof. Hamilton Rodrigues 
 
 
36 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Correto. Na seção de Estruturas de Repetição desta aula estudamos o for-else e o while-else. O else ao final 
do laço introduz um bloco de instruções a ser executado 1 vez obrigatoriamente após o laço. 
 
Resposta: D 
17. (FUNCERN - 2017 - IF-RN - Professor - Sistemas de Informação) 
Observe os seguintes comandos em Python: 
 
Ao término da execução da última linha, o programa deverá imprimir 
(a) [2, 9, 1, 0] 
(b) [2, 9, 0, 5] 
(c) [2, 0, 1, 5] 
(d) [0, 9, 1, 5] 
RESOLUÇÃO: 
Pessoal, esta questão aborda uma característica bem peculiar do Python que é a atribuição múltipla. 
Na linha 1 deste código ele cria a lista x = [2, 9, 1, 5] 
E nas linhas 2 e 3 ele atribui i = 1 e j = 2. 
Até aí tudo bem. Foram 3 atribuições simples. 
Na linha 4 tem a peculiaridade. É feita uma atribuição dupla. Observe como você deve interpretar o comando de 
dupla atribuição da linha 4 do código: 
 
A variável i está à esquerda da vírgula e recebe a atribuição do valor correspondente à esquerda da virgula após o 
igual (=). 
i = j * 2 – x[j] ** 2 
= 2 * 2 – x[2] ** 2 
= 4 – 1 ** 2 = 4 – 1 
= 3 
Portanto, i = 3. Isso é importante! 
Na segunda atribuição x[i] = 0, o i já vale 3. Logo, a atribuição que é feita é x[3] = 0. 
Prof. Hamilton Rodrigues 
 
 
37 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Resumindo, nossa lista inicial x manteve os valores de x[0] = 2, x[1] = 9 e x[2] = 1. Só o x[3] que mudou para 0. 
Assim, nossa lista x ao final será x = [2, 9, 1, 0]. 
Resposta: A 
18. (FGV - 2015 - PGE-RO - Técnico da Procuradoria - Tecnologia da Informação) 
Na linguagem Python 2.7, os comandos 
L=range(0,12) 
print L 
produzem: 
(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
(b) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 
(c) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 
(d) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12] 
(e) uma mensagem de erro 
RESOLUÇÃO: 
Já perceberam que o range cai MUITO em questão de concurso. O segredo para acertar todas essas questões é 
entender como o range funciona. Os parâmetros do range são os seguintes. 
 
O start e o step são opcionais. Quando é colocado no enunciado range(0,12) é porque o 1º parâmetro step = 0, o 
2º parâmetro stop = 12 e o 3º parâmetro step foi ignorado. Se ele é ignorado, vale seu valor default que é +1. Então 
step = 1. 
Com esses parâmetros, nosso range começa em 0 e vai incrementando de 1 em 1 até chegar no 12 (exclusive), ou 
seja, no inteiro imediatamente antes do 12 que é o 11. 
Nosso range então é a sequência [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]. 
Resposta: B 
19. (FGV - 2015 - PGE-RO - Analista da Procuradoria - Analista de Sistemas (Desenvolvimento)) 
Analise a linha de código Python 2.7 mostrada a seguir. 
X= [ ] 
O comando compatível com as características e a instância da variável X é: 
(a) X = X + 2 
(b) X = X (1) 
(c) X = X + [2] 
(d) X = X +"A" 
(e) X(0)="A" 
Prof. Hamilton Rodrigues 
 
 
38 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
Deem uma lida no início da parte teórica desta aula quando falamos que Python é uma linguagem de tipagem 
dinâmica e forte. Tipagem dinâmica significa que você pode mudar o tipo de uma variável no meio da execução. 
E tipagem forte significa que não pode misturar tipos incompatíveis numa operação. Esta questão foca 
exclusivamente na característica da tipagem forte. Em cada alternativa é feita uma tentativa de operar a variável 
X do tipo lista. Como eu sei que é do tipo lista? Por causa da atribuição a X o valor [ ]. Colchetes assim vazio significa 
que X foi inicializada como uma lista vazia. Resta saber se a operação envolve tipos compatíveis. Vamos analisar 
cada alternativa individualmente. 
(a) X = X + 2 
Errado. Não faz sentido somar a uma lista o número 2. 
(b) X = X (1) 
Errado. A chamada X(1) seria válida se X fosse uma função que recebesse 1 parâmetro do tipo numérico. Não 
é o caso porque nosso X é uma lista. 
(c) X = X + [2] 
Opa. Agora sim. Ele está somando a lista X com a lista [2] (uma lista com 1 único elemento 2). Esse operador 
+ é compatível com os tipos lista dos 2 operandos. Ao fazer X + [2] ele está concatenando a lista vazia X com a lista 
[2] o que resulta na lista [2]. Alternativa correta. 
(d) X = X +"A" 
Errado. Tipos incompatíveis para o operador +. Funcionaria se X fosse um string. Neste caso, ele concatenaria 
o string X com o string “A”. O que não é o caso. Nosso X é uma lista. 
(e) X(0)="A" 
Errado. X(0) faria sentido se X fosse uma função com 1 argumento. 
Resposta: C 
 
Prof. Hamilton Rodrigues 
 
 
39 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
20. (FGV - 2018 - MPE-AL - Analista do Ministério Público - Administrador de Banco de dados) 
Analise o código Python 2.7 a seguir. 
 
Sabe-se que a execução desse código produziu as duas linhas a seguir. 
 
Assinale a opção que apresenta a correta definição para o método Endereco na classe End_com. 
(a) return self.Endereco()+ ", " + self.com 
(b) return End_simples.Endereco() \ 
+ ", " + self.com 
(c) return super(End_com, self).Endereco() \ 
+ ", " + self.com 
(d) return parent(End_com,self).Endereco() \ 
+ ", " + self.com 
(e) return self.parent.Endereco() \ 
+ ", " + self.com 
 
Prof. Hamilton Rodrigues 
 
 
40 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
Vamos analisar a estrutura deste código Python dividindo em caixas para entender a função de cada parte. 
 
Inicialmente é definida a classe End_simples e dentro dela um método construtor __init__ e um método chamado 
Endereço. Repare que o nome da classe remete ao conceito de Endereço e os 3 parâmetros do construtor (rua, 
número e bairro) confirmam a referência ao mesmo conceito de endereço. O método Endereço retorna um string 
representativo dos atributos de endereço simples. 
Depois, é definida a classe End_com que, pelo nome, sugere o conceito de Endereço composto. Ela é uma 
subclasse de End_Simples. Sabemos disso pela notação End_com(End_Simples). O construtor desta classe tem 
em comum com a classe End_simples os atributos rua, número e bairro e além disse acrescenta um novo atributo 
chamado com, possivelmente um complemento do endereço. Também é criada uma função Endereço só que seu 
corpo não é implementado. 
Na 3ª caixa maior, ele cria uma instância de End_Simples e atribui à variável a e uma instância de End_com e atribui 
a b. Após isso, ele imprime a saída do método Endereço() de ambas as classes. 
O enunciado diz que o seguinte é impresso nessas 2 chamadas dos métodos Endereço. 
 
Reparem que o 1º print está de acordo com a definição do método Endereço() dentro da classe End_Simples. 
Definição da classe End_Simples 
Definição do construtor de End_Simples 
Definição do método Endereco() que 
imprime um string concatenando os 
atributos de End_Simples 
Definição da subclasse End_com, filha de End_Simples 
Definição do construtor de End_com 
Definição de um método Endereco() 
incompleta, sem corpo 
Instanciação de End_Simples 
Instanciação de End_com 
Prof. Hamilton Rodrigues 
 
 
41 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
O 2º print também imprime os 3 parâmetros da superclasse End_Simples da mesma forma que o método 
Endereco() da superclasse imprime e acrescenta o atributo exclusivo da subclasse com. 
Sabemos que, em Python, para invocar um método da classe mãe usamos a palavra reservada super. Pela saída 
“Av Miracema, 12 Centro, apto 3” percebe-se que é feita uma concatenação do string de saída do método 
Endereço() da classe mãe (End_Simples) com o atributo “com” da classe filha. 
Para isso funcionar, o método Endereco() da classe filha pode invocar o Endereco() da classe mãe com 
super(End_com, self).Endereco() e depois concatenar isso com “,”+self.com. O self.com indica que está se 
fazendo referência ao atributo com da instância corrente. 
Resposta: C 
21. (FGV - 2015 - PGE-RO - Analista da Procuradoria - Analista de Sistemas (Negócios, Suporte e 
Microinformática)) 
Analise o código Python a seguir. 
 
O código que produz resultado idêntico ao que é produzido pelo código acima é: 
(a) 
 
(b) 
 
Prof. Hamilton Rodrigues 
 
 
42 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
(c) 
 
(d) 
 
(e) 
 
RESOLUÇÃO: 
Esse é o tipo de questão que podemos e devemos usar o teste de mesa para resolver. 
Primeiramente iremos fazer um teste de mesa para entender o código do enunciado. 
 
As variáveis S e C são inicializadas com os valores 0 e 1 respectivamente. 
S 0 
C 1 
D 
 
 
Prof. Hamilton Rodrigues 
 
 
43 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Como C = 1 é menor que 7, ele entra no while e faz D=4. 
S 0 
C 1 
D 4 
Na linha 5 do código aparece um while aninhado. Como a condição de permanência nesse while aninhado é D > 0 
e o D neste ponto vale 4 ele entra no while D > 0 e faz as operações S=S+C+D e D=D-1. 
S 0 5 
C 1 
D 4 3 
Agora D = 3 e a condição de permanência no while D > 0 permanece válida fazendo com que seja feita mais uma 
volta. 
S 0 5 9 
C 1 1 1 
D 4 3 2 
Agora D = 2 e a condição de permanência no while D > 0 permanece válida fazendo com que seja feita mais uma 
volta. 
S 0 5 9 12 
C 1 1 1 1 
D 4 3 2 1 
Agora D = 1 e a condição de permanência no while D > 0 permanece válida fazendo com que seja feita mais uma 
volta. 
S 0 5 9 12 14 
C 1 1 1 1 1 
D 4 3 2 1 0 
 
 
Prof. Hamilton Rodrigues 
 
 
44 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Neste passo D = 0 e ele sai do while interior e executa a instrução C = C + 1. 
S 0 5 9 12 14 
C 1 1 1 1 1 2 
D 4 3 2 1 0 
Agora, C = 2 e, como a condição de permanência no while exterior é C < 7, ele segue para a 2ª iteração desse while 
exterior. Nessa 2ª volta, D recebe novamente o valor 4 e o while interior gira 4 vezes novamente (D = 4, D = 3, D = 
2, D = 1). A cada 1 dessas 4 voltas são executadas as instruções S=S+C+D e D=D-1. 
S 0 5 9 12 14 14 20 25 29 
C 1 1 1 1 1 2 2 2 2 
D 4 3 2 1 0 4 3 2 1 
Neste passo D = 0 e ele sai do while interior e executa a instrução C = C + 1. 
S 0 5 9 12 14 14 20 25 29 
C 1 1 1 1 1 2 2 2 2 3 
D 4 3 2 1 0 4 3 2 1 
Agora, C = 3 e, como a condição de permanência no while exterior é C < 7, ele segue para a 2ª iteração desse while 
exterior. Nessa 2ª volta, D recebe novamente o valor 4 e o while interior gira 4 vezes novamente (D = 4, D = 3, D = 
2, D = 1). A cada 1 dessas 4 voltas são executadas as instruções S=S+C+D e D=D-1. 
S 0 5 9 12 14 14 20 25 29 29 36 42 47 
C 1 1 1 1 1 2 2 2 2 3 3 3 3 
D 4 3 2 1 0 4 3 2 1 4 3 2 1 
Neste passo D = 0 e ele sai do while interior e executa a instrução C = C + 1. 
S 0 5 9 12 14 14 20 25 29 29 36 42 47 
C 1 1 1 1 1 2 2 2 2 3 3 3 3 4 
D 4 3 2 1 0 4 3 2 1 4 3 2 1 
Agora, C = 4 e, como a condição de permanência no while exterior é C < 7, ele segue para a 2ª iteração desse while 
exterior. Nessa 2ª volta, D recebe novamente o valor 4 e o while interior gira 4 vezes novamente (D = 4, D = 3, D = 
2, D = 1). A cada 1 dessas 4 voltas são executadas as instruções S=S+C+D e D=D-1. 
Prof. Hamilton Rodrigues 
 
 
45 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
S 0 5 9 12 14 14 20 25 29 29 36 42 47 47 55 52 58 
C 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 
D 4 3 2 1 0 4 3 2 1 4 3 2 1 4 3 2 1 
Neste passo D = 0 e ele sai do while interior e executa a instrução C = C + 1. 
S 0 5 9 12 14 14 20 25 29 29 36 42 47 47 55 52 58 
C 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 
D 4 3 2 1 0 4 3 2 1 4 3 2 1 4 3 2 1 
Agora, C = 5 e, como a condição de permanência no while exterior é C < 7, ele segue para a 2ª iteração desse while 
exterior. Nessa 2ª volta, D recebe novamente o valor 4 e o while interior gira 4 vezes novamente (D = 4, D = 3, D = 
2, D = 1). A cada 1 dessas 4 voltas são executadas as instruções S=S+C+D e D=D-1. 
S 0 5 9 12 14 14 20 25 29 29 36 42 47 47 55 52 58 58 67 75 82 
C 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 
D 4 3 2 1 0 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1 
Neste passo D = 0 e ele sai do while interior e executa a instrução C = C + 1. 
S 0 5 9 12 14 14 20 25 29 29 36 42 47 47 55 52 58 58 67 75 82 
C 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 
D 4 3 2 1 0 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1 
Agora, C = 5 e, como a condição de permanência no while exterior é C < 7, ele segue para a 2ª iteração desse while 
exterior. Nessa 2ª volta, D recebe novamente o valor 4 e o while interior gira 4 vezes novamente (D = 4, D = 3, D = 
2, D = 1). A cada 1 dessas 4 voltas são executadas as instruções S=S+C+D e D=D-1. 
S 0 5 9 12 14 14 20 25 29 29 36 42 47 47 55 52 58 58 67 75 82 82 92 101 109 
C 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 
D 4 3 2 1 0 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1 4 3 2 1 
Neste passo D = 0 e ele sai do while interior e executa a instrução C =C + 1. Como C = 6, após a operação C=C+6 a 
variável C irá para o valor C = 7. Isso faz com que a condição de permanência no while exterior deixe de ser verdade, 
o que leva o algoritmo Python a executar sua última instrução: print S. Como S a esta altura vale 109, é esse o valor 
que é impresso na tela. 
Ufa! Isso tudo foi só para entender o enunciado. 
Prof. Hamilton Rodrigues 
 
 
46 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Vocês repararam que o código do enunciado tem 2 whiles? 1 while exterior onde a variável C varia de 1 a 6 e 1 
while interior em que a variável D varia de 4 a 1. Dentro desses 2 loops aninhados, o S vai crescendo de acordo 
com a fórmula S=S+C+D. 
É como se cada 1 desses whiles fosse um range. O while exterior tem o mesmo comportamento que um range(1,7) 
(start = 1, stop = 7 não inclusive e incremento default 1). Já o while exterior tem o mesmo comportamento que um 
range(4,0,-1) (start = 4, stop = 0 não inclusive e incremento = -1). O que as alternativas a, b, c, d, e fazem é 
justamente isso. Mapear os whiles em 2 ranges. 
Das 5 alternativas, a que bate com esses 2 ranges (range(1,7) e range(4,0,-1)) e tem em seu interior a fórmula que 
corretamente incrementa o S=S+C+D é a alternativa D. 
 
Resposta: D 
22. (FCC - 2014 - TRT - 13ª Região (PB) - Analista Judiciário - Tecnologia da Informação) 
Considere o código abaixo, digitado em Python. 
 
No final da execução do código, o último valor armazenado nas variáveis a e b serão, respectivamente, 
(a) 13 e 21 
(b) 8 e 13 
(c) 5 e 10 
(d) 13 e 20 
(e) 8 e 10 
RESOLUÇÃO: 
Antes de mais nada, vamos entender o que o código do enunciado faz. 
 
 
 
A última linha do código, a que faz a atribuição dupla das variáveis a e b é a mais importante para a solução da 
questão. A atribuição múltipla ocorre conforme o esquema abaixo. 
Declaração e atribuição dupla das variáveis (a,b) com os valores (0,1) 
Loop while enquanto b for menor que 10 
Imprime o valor de b 
Modifica os valores da tupla (a,b) 
Prof. Hamilton Rodrigues 
 
 
47 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
 
O 1º elemento, a variável a, recebe o valor de b. E o 2º elemento, a variável b, recebe o valor de a + b. 
Vamos fazer um teste de mesa para observar como o algoritmo se comporta ao longo da execução. 
 
Inicialmente, a = 0 e b = 1. 
a 0 
b 1 
Como b =1, satisfaz a condição para entrada no while (b < 10). 
Dentro da 1ª iteração do while ele imprime o valor de b e na linha seguinte faz a atribuição dupla. Primeiramente 
ocorre a atribuição a = b = 1 e após isso a atribuição b = a + b = 0 + 1 = 1, conforme explicamos no esquema. 
a 0 1 
b 1 1 
Dentro da 2ª iteração do while ele imprime o valor de b e na linha seguinte faz a atribuição dupla. Primeiramente 
ocorre a atribuição a = b = 1 e após isso a atribuição b = a + b = 1 + 1 = 2. 
a 0 1 1 
b 1 1 2 
Dentro da 3ª iteração do while ele imprime o valor de b e na linha seguinte faz a atribuição dupla. Primeiramente 
ocorre a atribuição a = b = 2 e após isso a atribuição b = a + b = 1 + 2 = 3. 
a 0 1 1 2 
b 1 1 2 3 
Dentro da 4ª iteração do while ele imprime o valor de b e na linha seguinte faz a atribuição dupla. Primeiramente 
ocorre a atribuição a = b = 3 e após isso a atribuição b = a + b = 2 + 3 = 5. 
a 0 1 1 2 3 
b 1 1 2 3 5 
Prof. Hamilton Rodrigues 
 
 
48 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Dentro da 5ª iteração do while ele imprime o valor de b e na linha seguinte faz a atribuição dupla. Primeiramente 
ocorre a atribuição a = b = 5 e após isso a atribuição b = a + b = 3 + 5 = 8. 
a 0 1 1 2 3 5 
b 1 1 2 3 5 8 
Dentro da 6ª iteração do while ele imprime o valor de b e na linha seguinte faz a atribuição dupla. Primeiramente 
ocorre a atribuição a = b = 8 e após isso a atribuição b = a + b = 5 + 8 = 13. 
a 0 1 1 2 3 5 8 
b 1 1 2 3 5 8 13 
Neste ponto, b = 13 faz com que a condição de permanência no while, que é b < 10, deixe de ser verdadeira. Assim, 
é encerrado o loop e o algoritmo como um todo. Os valores de a e b são, respectivamente, 8 e 13. 
Resposta: B 
23.(FCC - 2014 - TRT - 13ª Região (PB) - Técnico Judiciário - Tecnologia da Informação) 
Considere o código abaixo digitado em Python. 
 
Preenche, corretamente, a lacuna I: 
(a) function 
(b) def 
(c) procedure 
(d) public 
(e) void 
 
Prof. Hamilton Rodrigues 
 
 
49 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
Vamos entender o que o código apresentado pela FCC faz. 
 
 
Você poderia se perguntar o que nos levou a saber que na linha 1 é feita a definição de uma função. São 2 os 
motivos. 1º, contar é uma palavra em português, nunca poderia ser uma palavra reservada do Python. Pelo fato 
de ser um verbo, indica que provavelmente contar seria uma função. Outra forma de você inferir que contar é uma 
função é na última linha do código a chamada à função contar. 
Portanto, o que se encaixa corretamente na lacuna I é a palavra reservada do Python destinada a indicar a definição 
de uma função. Trata-se da palavra def. 
Resposta: B 
24. (FGV - 2014 - DPE-RJ - Técnico Superior Especializado - Segurança da Informação) 
Considere o seguinte trecho de um programa escrito na linguagem Python. 
 
No primeiro bloco, o método FaleComigo é definido para a classe Carro, que simplesmente produz a mensagem 
“Sou um carro” ao ser invocado. Para a classe Fusca, definida no segundo bloco, fo i definido o método 
FaleComUmFusca, que apenas produz a mensagem “Sou um Fusca”. No terceiro bloco, os objetos x e y tornam-
se instâncias das classes Carro e Fusca, respectivamente. No quarto bloco, o método FaleComigo é invocado para 
cada um dos dois objetos, x e y. Ao ser executado, esse programa produz duas linhas na sua tela de saída: 
 
A mensagem produzida no comando y.FaleComigo deve-se ao mecanismo de 
Definição de uma função de nome contar que recebe como parâmetro a variável n 
Corpo da função contar 
Chamada à função contar passando como parâmetro n = 10 
Prof. Hamilton Rodrigues 
 
 
50 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
(a) abstração 
(b) associação 
(c) interface 
(d) herança 
(e) polimorfismo 
RESOLUÇÃO: 
Entendendo o que cada parte deste código apresentado faz. 
 
 
 
Observe que a classe Fusca é uma subclasse (também chamada de especialização) da classe Carro. Nestes casos, 
a classe filha herda da classe mãe seus atributos e métodos e ainda acrescenta alguma especialização, isto é, 
adiciona atributos e métodos exclusivos da classe filha. 
No enunciado em questão, a classe Fusca herda da sua mãe, a classe Carro, o método FaleComigo e ainda 
acrescenta o método FaleComUmFusca, exclusivo da classe filha Fusca. 
Na última linha do código é feita a chamada y.FaleComigo(). Isso é perfeitamente válido em Python porque o 
objeto y, apesar de não ter definido nenhum método FaleComigo, herdou este método de sua mãe Carro. 
Isso se deve ao mecanismo de herança. 
Resposta: D 
25.(CESPE - 2013 - MPOG - Tecnologia da Informação) 
A expressividade do código é uma característica importante no desenvolvimento e manutenção de um software. 
Python e Ruby são exemplos de linguagens que apresentam essa qualidade. Acerca dessas linguagens, julgue os 
itens subsequentes. 
Em Python, o comando int("1") cria um objeto do tipo int, que recebe 1 como parâmetro no seu construtor. 
 
Definição da classe Carro 
Definição do método FaleComigo, dentro da classe Carro 
Definição da classe Fusca, filha da classe Carro 
Definição do método FaleComUmFusca, dentro da classe Fusca 
Criação do objeto x, instância da classe Carro 
Criação do objeto y, instância da classe Fusca 
Chamada ao método FaleComigo do objeto x 
Chamadaao método FaleComigo do objeto y 
Prof. Hamilton Rodrigues 
 
 
51 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
O método int() do Python serve sim para criar um objeto do tipo int. Esse método pode receber tanto um número 
quanto um string a ser convertido para um inteiro. Portanto, o fato de no enunciado ser passado o string “1” não 
é problema. Esse string será convertido para um inteiro 1. 
Resposta: Certo 
26. (CESPE - 2013 - SERPRO - Analista - Desenvolvimento de Sistemas) 
Acerca das linguagens de implementação de regras de negócio, julgue os itens seguintes. 
No Python 3.0, foi disponibilizado um módulo de debug, chamado faulthandler, aplicável exclusivamente para os 
casos de falha de sistema. 
RESOLUÇÃO: 
O início da afirmativa “No Python 3.0, foi disponibilizado um módulo de debug, chamado faulthandler” está 
correto. O Python 3 introduziu na biblioteca padrão o faulthandler, destinado a fazer debug de código Python. 
Para ativá-lo, você deve fazer o import e ativá-lo da seguinte forma. 
 
Após isso, se ocorrer algum erro fatal no restante do seu código Python, poderá visualizar o estado da memória no 
momento do erro e entender melhor o que ocorreu. 
O erro da assertiva está na segunda parte quando o avaliador diz que o faulthandler é “aplicável exclusivamente 
para os casos de falha de sistema”. Isso não é verdade. O faulthandler se aplica não só a casos de falha de sistema, 
mas também a falhas de aplicação, o que inclui erros no próprio código Python, como por exemplo uma divisão 
por zero. 
Resposta: Errado 
27.(CESPE - 2013 - SERPRO - Analista - Redes) 
As linguagens de script podem ser utilizadas para estender funcionalidades de um programa. Acerca da linguagem 
Python, julgue os itens seguintes. 
O Python, no modo interpretador, aborta a execução do código com o status de erro, imprime a pilha dos erros na 
console e gera o log correspondente, quando o erro ocorre dentro do bloco try. 
RESOLUÇÃO: 
Pessoal, vamos entender como funciona o tratamento de erros no Python. 
Em 1º lugar, se o código estiver com um erro sintático, esse erro é identificado na hora da compilação, antes de 
iniciar a execução do código. No trecho abaixo, existe um erro sintático na linha 4, depois do if x > 0 deveria ter um 
: (dois pontos). O correto sintaticamente seria if x > 0:. Neste caso, na hora da compilação o Python geraria um 
SintaxError. 
Prof. Hamilton Rodrigues 
 
 
52 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
 
Agora, e se o código estiver sintaticamente correto, mas ocorrer um erro na hora da execução? Observe o código 
abaixo. 
 
Este código está sintaticamente correto. O erro ocorrerá somente em tempo de execução na linha 3. Na hora de 
fazer a divisão por zero, o interpretador Python interromperá o programa e lançará o erro do tipo 
ZeroDivisionError. 
Python permite o tratamento de erros por meio da estrutura try-except. Funciona da seguinte forma. Você coloca 
um trecho de código dentro de um bloco try. Se ocorrer algum erro de execução dentro desse bloco, o programa 
não será interrompido, mas pulará para o trecho except para tratamento do erro. 
 
O código acima está sintaticamente correto. O interpretador, após verificar que não há erro de sintaxe, iniciará a 
execução do script Python linha a linha. Quando chegar na linha 4 ocorre um erro de execução, uma divisão por 
zero. Apesar desse erro, o programa não será finalizado devido ao fato de o erro ocorrer dentro do bloco try. Neste 
caso, ele pulará para o except e fará o print da linha 6. Após isso, ele segue a execução normal das linhas 8, 9 e 10. 
Para isso que serve o try-except. Para tratar erros em tempo de execução e não abortar o programa. 
Vamos voltar ao enunciado da questão. 
“O Python, no modo interpretador, aborta a execução do código com o status de erro, imprime a pilha dos erros 
na console e gera o log correspondente, quando o erro ocorre dentro do bloco try.” 
Isto está errado. Como vimos, se o erro ocorre dentro do try, a execução do código não é abortada. 
Resposta: Errado 
28. (PaqTcPB - 2012 - UEPB - Técnico em Informática - Programador) 
No comando de atribuição em Python valor = raw_input(“Digite um valor: ”), qual o tipo da variável valor? 
(a) str 
(b) bool 
(c) int 
(d) float 
(e) file 
Prof. Hamilton Rodrigues 
 
 
53 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
A função raw_input serve para lermos valores digitados pelo usuário no prompt do Python. É uma função da 
versão 2 do Python. No Python 3, ela foi substituída pela input. Mas o funcionamento é o mesmo. Ela pega o valor 
digitado pelo usuário e armazena o valor no formato de string. 
Resposta: A 
29. (PaqTcPB - 2012 - UEPB - Técnico em Informática - Programador) 
Considere o trecho do programa Python abaixo. Qual o valor impresso ao executarmos o programa? 
 
(a) 25 
(b) 15 
(c) 5 
(d) 10 
(e) 20 
RESOLUÇÃO: 
Vamos entender como este código Python funciona. 
 
 
 
Pessoal, a variável x dentro da definição da função dobra não tem nada a ver com a variável x que recebe o valor 
5 do lado de fora do def. O x de dentro da função dobra só existe dentro do escopo dessa função. Assim, ao chamar 
o dobra(x) fora da definição, a variável x externa não sofre nenhuma alteração. Portanto, o que vai ser impresso 
ao final é o valor externo 5. 
Resposta: C 
 
Definição da função dobra, que recebe como parâmetro um número e retorna o dobro desse valor 
Atribuição do valor 5 à variável x 
Chama a função dobra 2x, passando como argumento x 
Imprime o valor final de x 
Prof. Hamilton Rodrigues 
 
 
54 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
30. (FCC - 2012 - TRE-CE - Analista Judiciário - Análise de Sistemas) 
Considere: 
 
Em relação à sintaxe em Python, é INCORRETO afirmar que na 
(a) linha 3 a classe B está herdando A. 
(b) linha 4 o atributo é considerado privado. 
(c) linha 5 exibe um método construtor. 
(d) linha 9 o objeto a é uma instância da classe B. 
(e) linha 13 o objeto b é uma instância da classe A. 
RESOLUÇÃO: 
Pessoal, vamos analisar cada uma das alternativas. 
(a) linha 3 a classe B está herdando A. 
Exato. A sintaxe class B(A) indica que está se declarando a classe B e que está herda da classe A 
(b) linha 4 o atributo é considerado privado. 
Por padrão, os atributos de classe em Python são públicos, isto é, podem ser acessados por chamada externa 
à classe. No enunciado, o atributo a da classe A é público (linha 2). Entretanto, se você colocar um underscore 
“_” antes do nome do atributo está indicando que ele é protegido, isto é, só pode ser acessado dentro da 
mesma classe que o atributo. E se colocar 2 underscores “__” antes do nome da variável esse atributo torna-
se privado, ou seja, inacessível externamente à classe. A rigor, há uma imprecisão nesta alternativa. O 
atributo _c da classe B só tem 1 underscore, então ele não seria privado, mas sim protegido. Mas infelizmente 
o avaliador neste caso considerou que protegido e privado seria a mesma coisa. Alternativa Correta segundo 
gabarito oficial. 
(c) linha 5 exibe um método construtor. 
Exato. Os métodos construtores em Python são declarados com o __init__ sempre. 
(d) linha 9 o objeto a é uma instância da classe B. 
Prof. Hamilton Rodrigues 
 
 
55 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Errado. Na linha 8 a variável a recebeu uma instância da classe A. O print isinstance(a, B) irá retornar False 
por isso, porque a é instância de A. 
(e) linha 13 o objeto b é uma instância da classe A. 
Certo. b é instância de A e o print irá imprimir True. 
Resposta: D 
31. (FCC - 2012 - TRE-CE - Técnico Judiciário - Programação de Sistemas) 
Sobre Python é correto afirmar: 
(a) É uma linguagem compilada, ou seja,o código-fonte de um programa é lido pelo compilador, que cria um 
arquivo binário, executável diretamente pelo hardware. 
(b) É uma linguagem fortemente tipada, ou seja, é preciso declarar variáveis e seus tipos. 
(c) Suporta funcionalidades comuns na orientação a objetos: herança, herança múltipla, polimorfismo, 
reflexão e introspecção. 
(d) Uma lista em Python é um conjunto de valores acessados por um índice numérico, inteiro, começando em 
1. Assim como em outras linguagens, a lista pode armazenar apenas valores de um mesmo tipo 
(e) Uma String Python á uma sequência imutável, alocada estaticamente, com restrição de tamanho. 
RESOLUÇÃO: 
Questão conceitual a respeito de Python. Iremos analisar cada uma das alternativas. 
(a) É uma linguagem compilada, ou seja, o código-fonte de um programa é lido pelo compilador, que cria um 
arquivo binário, executável diretamente pelo hardware. 
Errado. É uma linguagem interpretada que, após compilada, é transformada em bytecode que por sua vez é 
interpretado por uma máquina virtual. Não é executável diretamente pelo hardware. 
(b) É uma linguagem fortemente tipada, ou seja, é preciso declarar variáveis e seus tipos. 
Python é sim uma linguagem fortemente tipada. Mas isso não significa que seja necessário declarar os tipos 
das variáveis. Isso não é necessário porque os tipos são descobertos em tempo de execução, durante a 
interpretação linha a linha do script Python. Alternativa errada. 
(c) Suporta funcionalidades comuns na orientação a objetos: herança, herança múltipla, polimorfismo, 
reflexão e introspecção. 
Certo. O Python suporta todas essas funcionalidades: herança, herança múltipla, polimorfismo, reflexão e 
introspecção. Herança é quando uma classe é uma especialização da classe mãe. Herança múltipla é quando 
uma classe é filha de mais de uma classe-mãe. Isso é possível em Python. Polimorfismo é quando o método 
a ser executado depende da hierarquia de herança. Reflexão é quando é possível obter atributos de objetos 
passados como parâmetros de uma função. E introspecção é a possibilidade de saber o tipo de um objeto 
em tempo de execução. 
(d) Uma lista em Python é um conjunto de valores acessados por um índice numérico, inteiro, começando em 
1. Assim como em outras linguagens, a lista pode armazenar apenas valores de um mesmo tipo. 
Errado por 2 motivos. O índice inicial da lista em Python é 0 (zero). Além disso, a lista pode conter valores de 
tipos diferentes. 
Prof. Hamilton Rodrigues 
 
 
56 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
(e) Uma String Python á uma sequência imutável, alocada estaticamente, com restrição de tamanho. 
Errado. Strings em Python são imutáveis e têm restrição de tamanho. Mas elas não são alocadas 
estaticamente, mas sim dinamicamente. 
Resposta: C 
32.(FCC - 2012 - TRE-CE - Analista Judiciário - Análise de Sistemas) 
É INCORRETO afirmar que em Python, 
(a) excetuando-se as classes, tudo é um objeto (tipos, valores, funções, métodos e instâncias), e todos 
possuem atributos e métodos associados. 
(b) um ponto fundamental da sintaxe para métodos é que o primeiro argumento é especial, e convenciona- 
se utilizar o nome self para ele. 
(c) o método construtor (p.ex.: __init__()) é um método opcional invocado quando a classe é instanciada. 
(d) instâncias são objetos criados a partir de uma classe definida pelo programador; o que Python chama de 
instância é frequentemente denominado objeto em outras linguagens. 
(e) é possível acessar os atributos da instância diretamente, sem a necessidade de usar um método. 
RESOLUÇÃO: 
(a) excetuando-se as classes, tudo é um objeto (tipos, valores, funções, métodos e instâncias), e todos 
possuem atributos e métodos associados. 
Errado. Vimos isso na parte teórica desta aula. Em Python, tudo é objeto, inclusive as classes. 
(b) um ponto fundamental da sintaxe para métodos é que o primeiro argumento é especial, e convenciona- 
se utilizar o nome self para ele. 
Correto. Convenciona-se colocar o self como 1º argumento de um método e ele serve para referenciar 
atributos de instância da classe. 
(c) o método construtor (p.ex.: __init__()) é um método opcional invocado quando a classe é instanciada. 
Correto. Construtor em Python é sempre o __init__ 
(d) instâncias são objetos criados a partir de uma classe definida pelo programador; o que Python chama de 
instância é frequentemente denominado objeto em outras linguagens. 
Correto. Objeto é a instância de uma classe. 
(e) é possível acessar os atributos da instância diretamente, sem a necessidade de usar um método. 
Sim. Por default, os atributos de uma classe são públicos. Veja o código abaixo. 
 
Nas linhas 1 e 2 foi definida a classe Casa com um atributo público cor. Na linha 4 é criada uma instância de 
Casa e o print da linha 5 imprime “Branca”. Ou seja, o atributo cor é público, acessível externamente à classe. 
Prof. Hamilton Rodrigues 
 
 
57 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Resposta: A 
33. (CESPE - 2011 - Correios - Analista de Correios - Analista de Sistemas - Desenvolvimento de Sistemas) 
Com relação aos sistemas de suporte a decisão e gestão de conteúdo, julgue os seguintes itens. 
A linguagem Python e seu interpretador estão disponíveis para as mais diversas plataformas. Para que seja usado 
em determinado sistema operacional não suportado, é possível gerar o Python a partir do programa fonte 
utilizando um compilador C. Nesse caso, o código fonte é traduzido para o formato bytecode, que é 
multiplataforma e pode ser distribuído de forma independente. 
RESOLUÇÃO: 
Vimos na parte teórica desta aula que Python é multiplataforma. O bytecode pode ser executado em qualquer 
plataforma que possua uma máquina virtual Python. 
Nesta questão, o Cespe colocou que, caso certo sistema operacional não tenha compilador Python, o programa 
fonte Python poderia ser compilado para bytecode através de um compilador C. Isso é possível. O programa fonte 
Python é um texto comum, pode ser escrito num bloco de notas e salvo com extensão .py. Um compilador C 
poderia transformar esse fonte em bytecode Python. Esse bytecode não poderá rodar nesse sistema que não 
suporta Python, mas poderá ser distribuído para outros sistemas que possuem máquina virtual Python e rodar 
normalmente sem necessidade de recompilação. 
Resposta: Certo 
34. (CESPE - 2010 - INMETRO - Pesquisador - Desenvolvimento de Sistemas) 
 
Assinale a opção que apresenta a sequência correta de números impressos no console de um interpretador Python 
durante a execução dos comandos acima. 
(a) 1, 1, 2, 3, 5, 8 
(b) 2, 2, 4, 6 
(c) 2, 3, 6 
(d) 3, 3, 6, 10, 17, 28 
(e) 3, 6, 10, 17, 28 
RESOLUÇÃO: 
Mais uma questão de atribuição múltipla. Repararam que as bancas adoram isso. 
Vamos analisar o código linha a linha. 
 
 
Prof. Hamilton Rodrigues 
 
 
58 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
 
 
 
Vamos colocar isso no nosso teste de mesa. 
Inicialmente, a e b recebem os valores 0 e 2 respectivamente. 
a 0 
b 2 
Após isso, entra no while porque b = 2 e 2 é menor que 20. 
Na 1ª iteração do while, a = b = 2 e b = a+b+1 = 0+2+1 = 3. O programa imprime b = 3. 
a 0 2 
b 2 3 
Na 2ª iteração do while, a = b = 3 e b = +b+1 = 2+3+1 = 6. O programa imprime b = 6. 
a 0 2 3 
b 2 3 6 
Na 3ª iteração do while, a = b = 6 e b = a+b+1 = 3+6+1 = 10. O programa imprime b = 10. 
a 0 2 3 6 
b 2 3 6 10 
Na 4ª iteração do while, a = b = 10 e b = a+b+1 = 6+10+1 = 17. O programa imprime b = 17. 
a 0 2 3 6 10 
b 2 3 6 10 17 
Na 5ª iteração do while, a = b = 17 e b = a+b+1 = 10+17+1 = 28. O programa imprime b = 28. 
a 0 2 3 6 10 17 
b 2 3 6 10 17 28 
Atribuição dupla: a recebe 0 e b recebe 2 
Laço while enquanto b < 20 
Atribuição dupla: 
a recebe b 
b recebe a+b+1 
Imprime b 
Prof. Hamilton Rodrigues59 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Opa! Neste ponto, b ultrapassou 20, lembre-se que b < 20 é a condição de permanência no while. 
Portanto, os valores de b impressos foram 3, 6, 10, 17, 28. 
Resposta: D 
35. (CETAP - 2010 - AL-RR - Analista de Sistemas) 
Sobre a linguagem de programação PYTHON, marque a alternativa INCORRETA. 
(a) Python suporta a maioria das técnicas da programação orientada a objetos. 
(b) Python suporta e faz uso constante de tratamento de exceções como uma forma de testar condições de 
erro e outros eventos inesperados no programa. 
(c) As funções são definidas em Python utilizando a palavra chave def. 
(d) A separação de blocos de código em Python é feita utilizando a indentação de código. 
(e) O operador lógico de conjunção ("e", como em a e b) é &&. 
RESOLUÇÃO: 
(a) Python suporta a maioria das técnicas da programação orientada a objetos. 
Correto. 
(b) Python suporta e faz uso constante de tratamento de exceções como uma forma de testar condições de 
erro e outros eventos inesperados no programa. 
Correto. Com a estrutura try-except podemos tratar exceções geradas no bloco try com código dentro do 
bloco except 
(c) As funções são definidas em Python utilizando a palavra chave def. 
Correto. 
(d) A separação de blocos de código em Python é feita utilizando a indentação de código. 
Correto. Python, diferentemente de outras linguagens, não possui delimitadores de início e fim de bloco 
como o begin/end ou { }. O que delimita os blocos em Python é a indentação. 
(e) O operador lógico de conjunção ("e", como em a e b) é &&. 
Errado. O operador lógico conjunção, “E lógico”, em Python é o and. 
Resposta: E 
36. (CESPE - 2010 - SERPRO - Analista - Redes) 
Julgue os itens que se seguem, a respeito da linguagem Python, versão 3.1. 
As terminações de linha em ASCII podem ser usadas em arquivos fonte na linguagem Python, da mesma maneira 
e independentemente da plataforma. 
RESOLUÇÃO: 
O ASCII é um padrão de codificação de caracteres. Quando você escreve um código fonte em Python (arquivo .py) 
no formato ASCII você tem a garantia que esse fonte pode ser distribuído para outra plataforma que, se essa 
Prof. Hamilton Rodrigues 
 
 
60 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
plataforma conseguir ler texto ASCII todo seu código fonte .py será lido corretamente, inclusive os caracteres de 
terminação de linha. 
Resposta: Certo 
37. (FGV - 2018 - MPE-AL - Analista do Ministério Público - Administrador de Rede) 
Considere os seguintes operadores: 
Exponenciação 
Comparação de igualdade 
Módulo (resto da divisão) 
Assinale a lista dos símbolos que, respectivamente, representam esses operadores no Python. 
(a) ^ == mod 
(b) ** == % 
(c) ** = % 
(d) ** = mod 
(e) ^ = mod 
RESOLUÇÃO: 
Em Python, 
Exponenciação é representado pelo ** 
Comparação de igualdade é representado por == 
Módulo é representado por % 
Resposta: B 
38. (FGV - 2018 - MPE-AL - Analista do Ministério Público - Administrador de Rede) 
Considere a seguinte definição da função ƒ, declarada na sintaxe Python. 
 
Assinale o valor produzido pela execução do código acima. 
(a) 13 
(b) 17 
(c) 21 
(d) 34 
(e) 55 
 
Prof. Hamilton Rodrigues 
 
 
61 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
Este código reproduz a clássica sequência de Fibonacci que vimos na aula de Lógica de Programação. No código 
do enunciado, ele primeiramente define a função f(n) e depois, na última linha, chamada a função f passando 10 
como argumento. 
Pela definição da função f: 
f(10) = f(8) + f(9) = 
= f(6) + f(7) + f(7) + f(8) = 
= f(6) + 2*f(7) + f(8) = 
= f(4) + f(5) + 2*f(7) + f(8) = 
= f(4) + f(5) + 2*f(7) + f(6) + f(7) = 
= f(4) + f(5) + 3*f(7) + f(6) = 
= f(4) + f(5) + 3*(f(5) + f(6)) + f(6) = 
= f(4) + f(5) + 3*f(5) + 3*f(6) + f(6) = 
= f(4) + 4*f(5) + 4*f(6) = 
= f(4) + 4*(f(3) + f(4)) + 4*(f(4) + f(5)) = 
= f(4) + 4*f(3) + 4*f(4) + 4*f(4) + 4*f(5) = 
= 4*f(3) + 9*f(4) + 4*f(5) = 
= 4*(f(1) + f(2)) + 9*f(4) + 4*f(5) = 
= 4*f(1) + 4*f(2) + 9*(f(2) + f(3)) + 4*f(5) = 
= 4*f(1) + 4*f(2) + 9*f(2) + 9*f(3) + 4*f(5) = 
Prof. Hamilton Rodrigues 
 
 
62 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
= 4*f(1) + 13*f(2) + 9*f(3) + 4*f(5) = 
= 4*f(1) + 13*f(2) + 9*f(3) + 4*(f(3) + f(4)) = 
= 4*f(1) + 13*f(2) + 9*(f(1) + f(2)) + 4*f(3) + 4*f(4) = 
= 4*f(1) + 13*f(2) + 9*f(1) + 9*f(2) + 4*f(3) + 4*f(4) = 
= 13*f(1) + 22*f(2) + 4*f(3) + 4*f(4) = 
= 13*f(1) + 22*f(2) + 4*(f(1) + f(2)) + 4*f(4) = 
= 13*f(1) + 22*f(2) + 4*f(1) + 4*f(2) + 4*f(4) = 
= 17*f(1) + 26*f(2) + 4*f(4) = 
= 17*f(1) + 26*f(2) + 4*(f(2) + f(3)) = 
= 17*f(1) + 26*f(2) + 4*f(2) + 4*f(3) = 
= 17*f(1) + 30*f(2) + 4*f(3) = 
= 17*f(1) + 30*f(2) + 4*(f(1) + f(2)) = 
= 17*f(1) + 30*f(2) + 4*f(1) + 4*f(2) = 
= 21*f(1) + 34*f(2) 
Voltando ao código da função f(n), observe que n < 3 é a condição de escape da recursividade. Ela estabelece que, 
para n < 3, f(n) = n – 1. Ou seja, f(2) = 2 – 1 = 1 e f(1) = 1 – 1 = 0. 
 
Logo, 21*f(1) + 34*f(2) = 21*0 + 34*1 = 34 é o resultado final da chamada f(10). 
Prof. Hamilton Rodrigues 
 
 
63 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Resposta: D 
39. (FGV - 2018 - MPE-AL - Analista do Ministério Público - Administrador de Rede) 
Assinale a opção que indica o comando Python que produz [-2, -4]. 
(a) print range(0, -6, 2) 
(b) print range(0, -4, -2) 
(c) print range(-2, -4, -2) 
(d) print range(-2, -4, 2) 
(e) print range(-2, -6, -2) 
RESOLUÇÃO: 
O examinador quer que reproduzamos o intervalo [-2, -4] por meio da função range. 
O range cai muito em concurso, portanto é primordial você decorar a assinatura do método. 
 
Pelo intervalo do enunciado, o start = -2. O incremento (step) deve ser a diferença entre -2 e -4 que é -2. A 
sequência está decrescendo e o stop é não-inclusive. Assim, devemos fazer stop = -6 para que pare um step antes, 
no -4. 
Resumindo, teremos start = -2, stop = -6 e step = -2. 
Portanto, range(-2, -6, -2). 
Resposta: E 
40. (CEPS-UFPA - 2018 - UFPA - Técnico de Tecnologia da Informação) 
A herança múltipla é implementada na linguagem orientada a objetos chamada 
(a) Pascal 
(b) PHP 
(c) Ruby 
(d) Python 
(e) Prolog 
RESOLUÇÃO: 
De todas as linguagens mencionadas, a única que suporta herança múltipla é Python. Essa é uma característica 
importante do Python. Guarde isso. 
Resposta: D 
 
Prof. Hamilton Rodrigues 
 
 
64 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
41. (FUNCERN - 2017 - IF-RN - Professor - Sistemas de Informação) 
Analise o seguinte código escrito em Python, que define a estrutura da classe ContaBancaria: 
 
Sobre a classe acima e as regras de programação orientada a objetos em Python, a 
(a) criação de objetos chama primeiro o método __init__() e, em seguida, o __new__(). 
(b) palavra self deve ser fornecida como argumento em todos os métodos de instâncias. 
(c) variável num_contas é encapsulada e individual para cada instância da classe. 
(d) palavra @static escrita antes da definição do método sacar() torna o método estático. 
RESOLUÇÃO: 
(a) criação de objetos chama primeiro o método __init__() e, em seguida, o __new__(). 
Errado. Na verdade, é o contrário. Na criação de objetos primeiro é chamado o __new__ e só depois o 
__init__. O __new__ pode ser implementado quando você quer controlar a criação do objeto. O __init__ é 
utilizado para inicializar os atributos do objeto. O __new__ é raramente usado. Já o __init__ é bem 
frequentemente implementado como método construtor da classe para inicializar o estado da instância. 
(b) palavra self deve ser fornecida como argumento em todos os métodos de instâncias.Correto. A palavra reservada self serve para fazer referência aos atributos de instância da classe. 
Convenciona-se colocar o self como 1º argumento dos métodos de instâncias. 
(c) variável num_contas é encapsulada e individual para cada instância da classe. 
Errado. A variável num_contas não é encapsulada. Ela foi declarada na 2ª linha do código sem nenhum 
modificador. Assim, fica com a visibilidade default que é pública. Portanto não é encapsulada. Essa variável 
num_contas também não é individual para cada instância. Se fosse, seria referenciada pelo self. Como não 
é, trata-se de um atributo de classe e não de instância. 
(d) palavra @static escrita antes da definição do método sacar() torna o método estático. 
O decorador utilizado para tornar um método estático na verdade é o @staticmethod. Não existe esse 
modificador @static mencionado na alternativa. Errado. 
Resposta: B 
Prof. Hamilton Rodrigues 
 
 
65 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
42. (NC-UFPR - 2017 - ITAIPU BINACIONAL - Profissional de Nível Superior Jr - Computação ou 
Informática – Suporte) 
Três tipos de dados fundamentais em Python são as listas (“lists”), sequências ou ‘tuplas’ (“tuples”) e dicionários 
(“dictionaries”). A respeito dessas estruturas, é correto afirmar: 
(a) Listas não podem ser modificadas depois de criadas, ao passo que sequências e dicionários podem. 
(b) Listas podem ser modificadas, mas seu tamanho não pode ser modificado após a criação, ao passo que 
sequências e dicionários não têm essa limitação. 
(c) Dicionários não podem ser modificados depois de criados, ao passo que listas e sequências podem. 
(d) Listas e sequências são indexadas por inteiros, ao passo que dicionários podem ser indexados por “strings”. 
(e) Listas e dicionários são indexados por inteiros, ao passo que sequências podem ser indexadas por “strings”. 
RESOLUÇÃO: 
(a) Listas não podem ser modificadas depois de criadas, ao passo que sequências e dicionários podem. 
Errado. Listas são mutáveis. Podem ser modificadas depois de criadas. O conteúdo de seus elementos pode 
mudar bem como pode aumentar e diminuir de tamanho. 
(b) Listas podem ser modificadas, mas seu tamanho não pode ser modificado após a criação, ao passo que 
sequências e dicionários não têm essa limitação. 
Errado. O tamanho das listas pode ser modificado. Listas podem aumentar ou diminuir. Dicionários também. 
As sequências que não podem ter seu tamanho modificado. 
(c) Dicionários não podem ser modificados depois de criados, ao passo que listas e sequências podem. 
Errado. Dicionários podem ser modificados depois de criados. Assim como as listas. As sequências que não 
podem. 
(d) Listas e sequências são indexadas por inteiros, ao passo que dicionários podem ser indexados por “strings”. 
Certo. Para referenciar um elemento de uma lista, usa-se um índice inteiro. E para referenciar elementos de 
um dicionário, pode-se usar um string. 
A título de exemplo, no código abaixo, o print da linha 4 imprimirá “Coca Cola”, o elemento referente ao 
índice 1 da lista. 
O print da linha 7 imprimirá 9, o valor correspondente ao elemento indexado por “matemática” no dicionário. 
 
 
(e) Listas e dicionários são indexados por inteiros, ao passo que sequências podem ser indexadas por “strings”. 
Errado. Sequências não podem ser indexadas por strings. 
Resposta: D 
Prof. Hamilton Rodrigues 
 
 
66 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
43. (IF-CE - 2017 - IF-CE - Técnico de Laboratório - Informática) 
Considere o trecho do programa Python abaixo. 
 
Os valores impressos, ao se executar o programa, são, respectivamente, 
(a) 1 e 1 
(b) 10 
(c) 1 e 10 
(d) 10 e 1 
(e) 10 e 10 
RESOLUÇÃO: 
Questão básica sobre escopo de variável. A variável x da linha 2 é restrita ao escopo da função func(), ou seja, esse 
x da linha 2 só existe dentro da função enquanto a mesma está sendo executada. 
Já o x da linha 5 é uma outra variável. O escopo dela é o do programa Python. É externa à função func(). 
Ao executar esse programa Python, o que ocorre é o seguinte. Na linha 5 a variável x externa é inicializada com 10. 
Na linha 6 é chamada a função func e dentro dela é impresso o x = 1. Após o término da execução de func, volta 
para a linha 7 e é impressa a variável x externa que vale 10. 
Portanto, 1º vai ser impresso 1 e depois o 10. 
Resposta: C 
44. (IFB - 2017 - IFB - Professor - Informática/ Desenvolvimento de Sistemas) 
Dado o código em Python abaixo, assinale a alternativa que contém a sequência CORRETA de números da saída 
gerada pelos comandos “print”: 
 
(a) 64, 32, 1024, 1024, 512 
(b) 32, 16, 512, 1024, 256 
(c) 64, 32, 512, 1024, 256 
(d) 64, 32, 1024, 1024, 256 
(e) 32, 16, 512, 1024, 512 
Prof. Hamilton Rodrigues 
 
 
67 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
Na 1ª linha do código, é criada a lista numeros = [16, 32, 64, 128, 256, 512, 1024]. 
O índice de uma lista começa em 0. Portanto, numeros[2] referencia o 3º elemento da lista, o número 64. 
numeros[7-6] = numeros[1] = 32 
numeros[-1] referencia o último elemento da lista, o número 1024. 
len(numeros) retorna o tamanho (length) da lista numeros. Logo, len(numeros) = 7 
Então, numeros[len(numeros) – 1] = numeros[7 – 1] = numeros[6] = 1024. 
numeros[5-7] = numeros[-2] que é o penúltimo elemento da lista, o número 512. 
Portanto, os prints executarão os números 64, 32, 1024, 1024, 512, nesta ordem. 
Resposta: A 
45. (IFB - 2017 - IFB - Professor - Informática/ Desenvolvimento de Sistemas) 
Analise o trecho de código escrito em Python versão 3 a seguir: 
dados = [[“maria”,18], [“carlos”,16], [“alex”,17], [“sandra”,15]] 
for i in dados: 
print(i[1]) 
Marque a alternativa que apresenta a saída impressa no console. 
(a) 15 
16 
17 
18 
 (d) alex 
carlos 
maria 
sandra 
(b) 18 
16 
17 
15 
 (e) maria 18 
carlos 16 
alex 17 
sandra 15 
(c) maria 
carlos 
alex 
sandra 
 
 
 
Prof. Hamilton Rodrigues 
 
 
68 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
O for i in dados vai iterar sobre os elementos da lista dados. 
Esses elementos também são listas. 
Na 1ª iteração do for, i = [“maria”, 18]. Portanto, print(i[1]) irá imprimir o 2º elemento dessa lista, o número 18. 
Na 2ª iteração do for, i = [“carlos”, 16]. Portanto, print(i[1]) irá imprimir o 2º elemento dessa lista, o número 16. 
Na 3ª iteração do for, i = [“alex”, 17]. Portanto, print(i[1]) irá imprimir o 2º elemento dessa lista, o número 17. 
Na 4ª iteração do for, i = [“sandra”, 15]. Portanto, print(i[1]) irá imprimir o 2º elemento dessa lista, o número 15. 
 
Resposta: B 
46. (IFB - 2017 - IFB - Professor - Informática/ Desenvolvimento de Sistemas) 
Com relação a Algoritmos e Estrutura de Dados, dadas as afirmações abaixo, segundo Farrer (1999), assinale a 
alternativa CORRETA: 
(a) Python é uma linguagem compilável, a qual, após esse processo, gera um arquivo executável, do tipo 
binário. 
(b) A declaração de variáveis é algo obrigatório em Python. 
(c) Python é uma linguagem procedural a qual não contempla orientação a objetos. 
(d) Listas, em Python, são conjuntos de valores, os quais só podem ser do mesmo tipo, acessados por um 
índice numérico que inicia em 0 (zero). 
(e) Em comandos condicionais ou de repetição, a separação de blocos de código em Python é feita utilizando 
a indentação. 
RESOLUÇÃO: 
(a) Python é uma linguagem compilável, a qual, após esse processo, gera um arquivo executável, do tipo 
binário. 
Errado. O arquivo gerado após a compilação, o bytecode, não é binário, é um bytecode interpretável por 
uma máquina virtual. 
(b) A declaração de variáveis é algo obrigatório em Python. 
Errado. A declaração de variáveis não é obrigatória. Pode ser feita implicitamente. 
(c) Python é uma linguagem procedurala qual não contempla orientação a objetos. 
Errado. Python é multiparadigma. Contempla os paradigmas funcional, imperativo, procedural e orientação 
a objetos (FIPO). 
(d) Listas, em Python, são conjuntos de valores, os quais só podem ser do mesmo tipo, acessados por um 
índice numérico que inicia em 0 (zero). 
Errado. Listas em Python podem ter valores de tipos diferentes. 
(e) Em comandos condicionais ou de repetição, a separação de blocos de código em Python é feita utilizando 
a indentação. 
Prof. Hamilton Rodrigues 
 
 
69 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Certo. Não só nos comandos condicionais e de repetição, mas também em qualquer outro bloco deve ser 
feita a indentação. 
Resposta: E 
47. (IFB - 2017 - IFB - Professor - Informática/ Desenvolvimento de Sistemas) 
Dado o código em Python abaixo, assinale a alternativa que contém a saída CORRETA gerada pelo “print”: 
 
(a) galinha 
(b) ga 
(c) t 
(d) gato 
(e) to 
RESOLUÇÃO: 
Questãozinha “casca de banana”. O índice de uma lista em Python começa sempre em 0 (zero). 
Quando é feita a referência a lista[3][2] primeiramente é selecionado o elemento de índice 3 da lista, que é o 4º 
elemento da mesma, porque o índice começa no zero. 
O 4º elemento da lista é o string “gato”. Então, lista[3] = “gato”. O string é uma lista de caracteres, lembra? 
lista[3][2] significa que ele está referenciando o elemento de índice 2 dentro de lista[3]. Ele está buscando o 
elemento de índice 2 de “gato”. Mais uma vez, a contagem do índice dentro do string começa no zero. Então, 
lista[3][2] = “t”, o 3º caractere do string. 
Resposta: C 
 
Prof. Hamilton Rodrigues 
 
 
70 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
48. (IFPI - 2016 - IF-PI - Professor - Informática) 
Considere o seguinte trecho de um programa escrito na linguagem Python. 
 
Selecione a alternativa que contém as duas linhas geradas na tela de saída, após a execução do programa ilustrado 
acima: 
(a) Linha 1: Sou uma maquina 
Linha 2: Sou um robô 
 
(b) Linha 1: Sou um robo 
Linha 2: Sou um robô 
 
(c) Linha 1: Sou um robo 
Linha 2: Sou uma maquina 
 
(d) Linha 1: Sou um robo, maquina 
Linha 2: Sou uma maquina, robô 
 
(e) Linha 1: Sou uma maquina 
Linha 2: Sou uma maquina 
 
Prof. Hamilton Rodrigues 
 
 
71 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
RESOLUÇÃO: 
Galera, vamos entender cada parte deste código. 
 
 
Este código não tem muito mistério. O método Conversar só existe na classe mãe Maquina. A classe filha Robo 
irá herdar normalmente esse método Conversar. 
Portanto, o mesmo método Conversar será chamado 2 vezes, 1 pela instância de Maquina na variável Amigo1 e 
outra pela instância de Robo na variável Amigo2. 
O método é o mesmo. A saída será a mesma nos 2 casos: “Sou uma maquina” “Sou uma maquina”. 
Resposta: E 
 
Definição da classe Maquina 
Método Conversar dentro da classe Maquina 
Definição da classe Robo 
Método ConversarRobo dentro da classe Robo 
Variável Amigo1 recebe uma instância da classe Maquina 
Variável Amigo2 recebe uma instância da classe Robo 
Chamada ao método Conversar do objeto Amigo1, instância de Maquina 
Chamada ao método Conversar do objeto Amigo2, instância de Robo 
Prof. Hamilton Rodrigues 
 
 
72 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
49. (CESGRANRIO - 2016 - UNIRIO - Técnico em Tecnologia da Informação) 
Considere o seguinte código em Python 
 
A saída na tela após a execução será 
(a) Fulano m 
(b) Fulano 2500.0 
(c) Fulano de Tal m 
(d) Fulano de Tal 2500.0 
(e) Fulano de Tal m 2500.0 
RESOLUÇÃO: 
Vamos entender o funcionamento deste código. 
 
 
A definição da classe Empregado está perfeita. Ela tem 3 atributos de instância que são o nome, o sexo e o salario. 
Atributo de instância significa que cada instância vai ter um valor específico para esses atributos. Sabemos que são 
de instância porque são referenciados pelo self e recebem valores no construtor __init__. 
No construtor, ao criar o objeto Fulano, ele passa os seguintes valores: nome = “Fulano de Tal”, sexo = “m” e 
salario = 2500.00. 
No print da última linha, ele chama Fulano.nome[0:6], ou seja, está chamando o atributo nome dentro de Fulano, 
mas não lê o string nome inteiro. Ele quer somente o substring nome[0:6], isto é, os caracteres entre os índices 0 
e 6. Os 7 primeiros caracteres de nome = “Fulano de Tal”. Então nome[0:6] = “Fulano “. 
Na 2ª parte do print ele obtêm o salario que vale 2500.00. 
Resumindo, o print irá imprimir “Fulano 2500.00”. 
Resposta: B 
 
Definição da classe Empregado com 3 
atributos de instância: nome, sexo e salario 
Criação de um objeto Fulano instância da 
classe Empregado 
Print de atributos do objeto Fulano 
Prof. Hamilton Rodrigues 
 
 
73 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
50. (FGV - 2015 - PGE-RO - Técnico da Procuradoria - Tecnologia da Informação) 
Na linguagem Python 2.7, um comando como 
a=input("XXX") 
provoca: 
(a) a definição de uma referência a um arquivo que deverá ser utilizado no modo somente leitura; 
(b) a criação de uma lista de valores denominada “a" cujo elemento inicial é a string “XXX"; 
(c) a leitura de um valor do arquivo de entrada correntemente designado de acordo com um formato expresso 
pela string “XXX"; 
(d) um prompt no dispositivo de saída e a leitura de um valor que é armazenado na variável “a"; 
(e) a associação à variável “a" de uma função denominada “XXX" que pertence à biblioteca “input". 
RESOLUÇÃO: 
Já vimos anteriormente que a função a = input(“XXX”) imprime no prompt do usuário a mensagem “XXX” e fica 
aguardando o usuário digitar alguma coisa no prompt. O que for digitado é retornado pela função e armazenado 
na variável a. 
Resposta: D 
 
 
 
 
Prof. Hamilton Rodrigues 
 
 
74 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Lista de questões comentadas 
1. (IF-MT - 2018 - IF-MT - Informática) 
Sobre a linguagem Python, é INCORRETO afirmar que: 
(a) Suporta os paradigmas: imperativo, orientado a objetos e funcional. 
(b) Utiliza indentação para delimitar início e fim de blocos. 
(c) A linguagem Python é distribuída sob licença que proíbe sua incorporação em produtos proprietários. 
(d) Python é uma linguagem de tipagem dinâmica e forte. 
(e) Python é um software de código aberto. 
 
2. (FCC - 2018 - MPE-PE - Analista Ministerial - Informática) 
Considere o fragmento de código Python abaixo. 
 
Para que o código seja compilado e executado corretamente, a lacuna I deverá ser preenchida com 
(a) __init__(self, nome, renda): 
(b) function __init(self, nome, renda): 
(c) def __construct(self, nome, renda): 
(d) def __init__(self, nome, renda): 
(e) Cliente(self, nome, renda): 
 
 
Prof. Hamilton Rodrigues 
 
 
75 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
3. (IF-MT - 2018 - IF-MT - Informática) 
Considere o seguinte fragmento de código fonte, escrito em linguagem python: 
a = 3 
b = a * 2 
a, b = b, a 
Após a execução de todos os comandos, qual é o resultado apresentado pelo comando abaixo? 
print(a) 
(a) 3 
(b) 6 
(c) 36 
(d) 63 
(e) a 
 
4. (CESPE - 2018 - Polícia Federal - Agente de Polícia Federal) 
Considere o programa a seguir, na linguagem Python. 
 
A sintaxe do programa está correta e, quando executado, ele apresentará o seguinte resultado. 
PF 
 
5. (CESPE - 2018 - Polícia Federal - Perito Criminal Federal - Conhecimentos Básicos - Todas as Áreas) 
Considere os seguintes comandos na programação em Python. 
 
Esses comandos, quando executados, apresentarão o resultado a seguir. 
 
 
 
Prof. Hamilton Rodrigues 
 
 
76 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agenteda PCDF 
6. (CESPE - 2018 - Polícia Federal - Agente de Polícia Federal) 
Considere o programa a seguir, na linguagem Python. 
 
A sintaxe do programa está correta e, quando executado, ele apresentará o seguinte resultado. 
 
 
7. (FGV - 2018 - AL-RO - Analista Legislativo - Banco de Dados) 
Considere a aplicação do algoritmo de busca binária sobre um conjunto de chaves distintas. 
Assinale a declaração Python que define uma lista L sobre a qual esse algoritmo não pode ser aplicado 
diretamente. 
(a) L=[0,1,2,3,5,8,13,21] 
(b) L=[0] 
(c) L=[“MARIA”, “MARINA”, “MARIO”] 
(d) L=[-1,-2,-3,-4,-5] 
(e) L=[“MARIA”, “MARIO”, “MARINA”] 
 
8. (FGV - 2018 - AL-RO - Analista Legislativo - Banco de Dados) 
Analise o código Python a seguir. 
 
Assinale o que acontece com esse código quando o comando Run Module (F5) é acionado na interface IDLE 
(Python GUI). 
(a) Os valores [1, 2, 3, 4, 5, 6] são exibidos. 
(b) Os valores [1, 2, 2, 4, 8, 32] são exibidos. 
(c) Os valores [1, 1, 2, 6, 24, 120] são exibidos 
(d) Um erro de compilação 
(e) Um erro de execução 
 
 
Prof. Hamilton Rodrigues 
 
 
77 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
9. (COPEVE-UFAL - 2016 - UFAL - Analista de Tecnologia da Informação (Edital nº 30)) 
O trecho de código Python é uma função recursiva para o cálculo do fatorial de um número natural qualquer. 
Entretanto, apresenta um erro de programação. 
 
Em qual linha está o erro e como consertá-lo para que a função cumpra corretamente o seu propósito? 
(a) o código deveria ser “if (n == 1):” na linha 2. 
(b) o código deveria ser “return 0” na linha 3. 
(c) o código deveria ser “if (n == 1) and (n == 0):” na linha 2. 
(d) o código deveria ser “return Fatorial(n - 1) * n;” na linha 5. 
(e) o código deveria ser “return Fatorial(n) * n -1;” na linha 5. 
 
10. (IF-MT - 2018 - IF-MT - Informática) 
Considere o seguinte fragmento de código fonte escrito na linguagem python: 
 
Após a execução de todos esses códigos, qual é o valor a ser mostrado mediante o comando abaixo? 
 
(a) 0 
(b) 1 
(c) 3 
(d) 6 
(e) 9 
 
 
Prof. Hamilton Rodrigues 
 
 
78 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
11.(FGV - 2018 - AL-RO - Analista Legislativo - Análise e Desenvolvimento de Sistemas) 
Assinale o código Python que cria um novo arquivo, contendo uma linha. 
(a) 
 
 (b) 
 
(c) 
 
 (d) 
 
(e) 
 
 
 
12. (FGV - 2018 - AL-RO - Analista Legislativo - Análise e Desenvolvimento de Sistemas) 
Analise o código Python a seguir. 
 
O comando de execução desse código produz 
(a) erro de sintaxe. 
(b) erro de execução. 
(c) a exibição do número 12 somente. 
(d) a exibição de dois números, 14 e 12, nessa ordem. 
(e) a exibição de três números, 18, 12 e 10, nessa ordem. 
 
 
Prof. Hamilton Rodrigues 
 
 
79 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
13. (FGV - 2018 - AL-RO - Analista Legislativo - Infraestrutura de Redes e Comunicação) 
A execução do código Python a seguir termina com sucesso, mostrando a lista de números dispostos em ordem 
crescente corretamente. 
 
Assinale a opção que indica o valor exibido pelo primeiro comando print 
(a) 0 
(b) 1 
(c) 8 
(d) 16 
(e) 64 
 
14. (Quadrix - 2019 - CRA-PR - Analista Sistema I) 
Julgue o item quanto à programação orientada a objetos e à linguagem de programação Python. 
Um recurso bastante útil da Python consiste no tratamento posicional das strings. Elas são consideradas 
como sequências mutáveis e podem ter sua ordem (sequência) alterada da esquerda para a direita ou vice‐versa, 
dependendo da função do programa. 
 
15. (PUC-PR - 2017 - TJ-MS - Técnico de Nível Superior - Analista de Infraestrutura de Rede) 
Dentre as seguintes funções, a que serve para converter um caractere único no seu respectivo valor inteiro em 
Python é 
(a) unichr (x) 
(b) hex (x) 
(c) ord (x) 
(d) oct (x) 
(e) chr (x) 
Prof. Hamilton Rodrigues 
 
 
80 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
 
16. (FUNCERN - 2017 - IF-RN - Professor - Sistemas de Informação) 
Em relação às estruturas de controles da linguagem de programação Python, a palavra 
(a) pass tem o mesmo efeito que a palavra continue do C++. 
(b) elif vem acompanhada de parênteses e dois pontos. 
(c) null representa o tipo para objetos nulos. 
(d) else pode ser usada opcionalmente junto ao laço while ou for. 
 
17. (FUNCERN - 2017 - IF-RN - Professor - Sistemas de Informação) 
Observe os seguintes comandos em Python: 
 
Ao término da execução da última linha, o programa deverá imprimir 
(a) [2, 9, 1, 0] 
(b) [2, 9, 0, 5] 
(c) [2, 0, 1, 5] 
(d) [0, 9, 1, 5] 
 
18. (FGV - 2015 - PGE-RO - Técnico da Procuradoria - Tecnologia da Informação) 
Na linguagem Python 2.7, os comandos 
L=range(0,12) 
print L 
produzem: 
(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
(b) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 
(c) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 
(d) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12] 
(e) uma mensagem de erro 
 
 
Prof. Hamilton Rodrigues 
 
 
81 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
19. (FGV - 2015 - PGE-RO - Analista da Procuradoria - Analista de Sistemas (Desenvolvimento)) 
Analise a linha de código Python 2.7 mostrada a seguir. 
X= [ ] 
O comando compatível com as características e a instância da variável X é: 
(a) X = X + 2 
(b) X = X (1) 
(c) X = X + [2] 
(d) X = X +"A" 
(e) X(0)="A" 
 
20. (FGV - 2018 - MPE-AL - Analista do Ministério Público - Administrador de Banco de dados) 
Analise o código Python 2.7 a seguir. 
 
Sabe-se que a execução desse código produziu as duas linhas a seguir. 
 
Assinale a opção que apresenta a correta definição para o método Endereco na classe End_com. 
Prof. Hamilton Rodrigues 
 
 
82 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
(a) return self.Endereco()+ ", " + self.com 
(b) return End_simples.Endereco() \ 
+ ", " + self.com 
(c) return super(End_com, self).Endereco() \ 
+ ", " + self.com 
(d) return parent(End_com, self).Endereco() \ 
+ ", " + self.com 
(e) return self.parent.Endereco() \ 
+ ", " + self.com 
 
21. (FGV - 2015 - PGE-RO - Analista da Procuradoria - Analista de Sistemas (Negócios, Suporte e 
Microinformática)) 
Analise o código Python a seguir. 
 
O código que produz resultado idêntico ao que é produzido pelo código acima é: 
(a) 
 
(b) 
 
Prof. Hamilton Rodrigues 
 
 
83 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
(c) 
 
(d) 
 
(e) 
 
 
22. (FCC - 2014 - TRT - 13ª Região (PB) - Analista Judiciário - Tecnologia da Informação) 
Considere o código abaixo, digitado em Python. 
 
No final da execução do código, o último valor armazenado nas variáveis a e b serão, respectivamente, 
(a) 13 e 21 
(b) 8 e 13 
(c) 5 e 10 
(d) 13 e 20 
(e) 8 e 10 
 
 
Prof. Hamilton Rodrigues 
 
 
84 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
23.(FCC - 2014 - TRT - 13ª Região (PB) - Técnico Judiciário - Tecnologia da Informação) 
Considere o código abaixo digitado em Python. 
 
Preenche, corretamente, a lacuna I: 
(a) function 
(b) def 
(c) procedure 
(d) public 
(e) void 
 
 
Prof. Hamilton Rodrigues 
 
 
85 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
24. (FGV - 2014 - DPE-RJ - Técnico Superior Especializado - Segurança da Informação) 
Considere o seguinte trecho de um programa escrito na linguagem Python. 
 
No primeiro bloco, o método FaleComigo é definido para a classe Carro, que simplesmente produz a mensagem 
“Sou um carro” ao ser invocado. Para a classe Fusca, definida no segundo bloco, foi definido o método 
FaleComUmFusca, que apenas produz a mensagem “Souum Fusca”. No terceiro bloco, os objetos x e y tornam-
se instâncias das classes Carro e Fusca, respectivamente. No quarto bloco, o método FaleComigo é invocado para 
cada um dos dois objetos, x e y. Ao ser executado, esse programa produz duas linhas na sua tela de saída: 
 
A mensagem produzida no comando y.FaleComigo deve-se ao mecanismo de 
(a) abstração 
(b) associação 
(c) interface 
(d) herança 
(e) polimorfismo 
 
25.(CESPE - 2013 - MPOG - Tecnologia da Informação) 
A expressividade do código é uma característica importante no desenvolvimento e manutenção de um software. 
Python e Ruby são exemplos de linguagens que apresentam essa qualidade. Acerca dessas linguagens, julgue os 
itens subsequentes. 
Em Python, o comando int("1") cria um objeto do tipo int, que recebe 1 como parâmetro no seu construtor. 
 
26. (CESPE - 2013 - SERPRO - Analista - Desenvolvimento de Sistemas) 
Acerca das linguagens de implementação de regras de negócio, julgue os itens seguintes. 
No Python 3.0, foi disponibilizado um módulo de debug, chamado faulthandler, aplicável exclusivamente para os 
casos de falha de sistema. 
Prof. Hamilton Rodrigues 
 
 
86 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
 
27.(CESPE - 2013 - SERPRO - Analista - Redes) 
As linguagens de script podem ser utilizadas para estender funcionalidades de um programa. Acerca da linguagem 
Python, julgue os itens seguintes. 
O Python, no modo interpretador, aborta a execução do código com o status de erro, imprime a pilha dos erros na 
console e gera o log correspondente, quando o erro ocorre dentro do bloco try. 
 
28. (PaqTcPB - 2012 - UEPB - Técnico em Informática - Programador) 
No comando de atribuição em Python valor = raw_input(“Digite um valor: ”), qual o tipo da variável valor? 
(a) str 
(b) bool 
(c) int 
(d) float 
(e) file 
 
29. (PaqTcPB - 2012 - UEPB - Técnico em Informática - Programador) 
Considere o trecho do programa Python abaixo. Qual o valor impresso ao executarmos o programa? 
 
(a) 25 
(b) 15 
(c) 5 
(d) 10 
(e) 20 
 
 
Prof. Hamilton Rodrigues 
 
 
87 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
30. (FCC - 2012 - TRE-CE - Analista Judiciário - Análise de Sistemas) 
Considere: 
 
Em relação à sintaxe em Python, é INCORRETO afirmar que na 
(a) linha 3 a classe B está herdando A. 
(b) linha 4 o atributo é considerado privado. 
(c) linha 5 exibe um método construtor. 
(d) linha 9 o objeto a é uma instância da classe B. 
(e) linha 13 o objeto b é uma instância da classe A. 
 
31. (FCC - 2012 - TRE-CE - Técnico Judiciário - Programação de Sistemas) 
Sobre Python é correto afirmar: 
(a) É uma linguagem compilada, ou seja, o código-fonte de um programa é lido pelo compilador, que cria um 
arquivo binário, executável diretamente pelo hardware. 
(b) É uma linguagem fortemente tipada, ou seja, é preciso declarar variáveis e seus tipos. 
(c) Suporta funcionalidades comuns na orientação a objetos: herança, herança múltipla, polimorfismo, 
reflexão e introspecção. 
(d) Uma lista em Python é um conjunto de valores acessados por um índice numérico, inteiro, começando em 
1. Assim como em outras linguagens, a lista pode armazenar apenas valores de um mesmo tipo 
(e) Uma String Python á uma sequência imutável, alocada estaticamente, com restrição de tamanho. 
 
 
Prof. Hamilton Rodrigues 
 
 
88 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
32.(FCC - 2012 - TRE-CE - Analista Judiciário - Análise de Sistemas) 
É INCORRETO afirmar que em Python, 
(a) excetuando-se as classes, tudo é um objeto (tipos, valores, funções, métodos e instâncias), e todos 
possuem atributos e métodos associados. 
(b) um ponto fundamental da sintaxe para métodos é que o primeiro argumento é especial, e convenciona- 
se utilizar o nome self para ele. 
(c) o método construtor (p.ex.: __init__()) é um método opcional invocado quando a classe é instanciada. 
(d) instâncias são objetos criados a partir de uma classe definida pelo programador; o que Python chama de 
instância é frequentemente denominado objeto em outras linguagens. 
(e) é possível acessar os atributos da instância diretamente, sem a necessidade de usar um método. 
 
33. (CESPE - 2011 - Correios - Analista de Correios - Analista de Sistemas - Desenvolvimento de Sistemas) 
Com relação aos sistemas de suporte a decisão e gestão de conteúdo, julgue os seguintes itens. 
A linguagem Python e seu interpretador estão disponíveis para as mais diversas plataformas. Para que seja usado 
em determinado sistema operacional não suportado, é possível gerar o Python a partir do programa fonte 
utilizando um compilador C. Nesse caso, o código fonte é traduzido para o formato bytecode, que é 
multiplataforma e pode ser distribuído de forma independente. 
 
34. (CESPE - 2010 - INMETRO - Pesquisador - Desenvolvimento de Sistemas) 
 
Assinale a opção que apresenta a sequência correta de números impressos no console de um interpretador Python 
durante a execução dos comandos acima. 
(a) 1, 1, 2, 3, 5, 8 
(b) 2, 2, 4, 6 
(c) 2, 3, 6 
(d) 3, 3, 6, 10, 17, 28 
(e) 3, 6, 10, 17, 28 
 
 
Prof. Hamilton Rodrigues 
 
 
89 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
35. (CETAP - 2010 - AL-RR - Analista de Sistemas) 
Sobre a linguagem de programação PYTHON, marque a alternativa INCORRETA. 
(a) Python suporta a maioria das técnicas da programação orientada a objetos. 
(b) Python suporta e faz uso constante de tratamento de exceções como uma forma de testar condições de 
erro e outros eventos inesperados no programa. 
(c) As funções são definidas em Python utilizando a palavra chave def. 
(d) A separação de blocos de código em Python é feita utilizando a indentação de código. 
(e) O operador lógico de conjunção ("e", como em a e b) é &&. 
 
36. (CESPE - 2010 - SERPRO - Analista - Redes) 
Julgue os itens que se seguem, a respeito da linguagem Python, versão 3.1. 
As terminações de linha em ASCII podem ser usadas em arquivos fonte na linguagem Python, da mesma maneira 
e independentemente da plataforma. 
 
37. (FGV - 2018 - MPE-AL - Analista do Ministério Público - Administrador de Rede) 
Considere os seguintes operadores: 
Exponenciação 
Comparação de igualdade 
Módulo (resto da divisão) 
Assinale a lista dos símbolos que, respectivamente, representam esses operadores no Python. 
(a) ^ == mod 
(b) ** == % 
(c) ** = % 
(d) ** = mod 
(e) ^ = mod 
 
 
Prof. Hamilton Rodrigues 
 
 
90 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
38. (FGV - 2018 - MPE-AL - Analista do Ministério Público - Administrador de Rede) 
Considere a seguinte definição da função ƒ, declarada na sintaxe Python. 
 
Assinale o valor produzido pela execução do código acima. 
(a) 13 
(b) 17 
(c) 21 
(d) 34 
(e) 55 
 
39. (FGV - 2018 - MPE-AL - Analista do Ministério Público - Administrador de Rede) 
Assinale a opção que indica o comando Python que produz [-2, -4]. 
(a) print range(0, -6, 2) 
(b) print range(0, -4, -2) 
(c) print range(-2, -4, -2) 
(d) print range(-2, -4, 2) 
(e) print range(-2, -6, -2) 
 
40. (CEPS-UFPA - 2018 - UFPA - Técnico de Tecnologia da Informação) 
A herança múltipla é implementada na linguagem orientada a objetos chamada 
(a) Pascal 
(b) PHP 
(c) Ruby 
(d) Python 
(e) Prolog 
 
 
Prof. Hamilton Rodrigues 
 
 
91 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
41. (FUNCERN - 2017 - IF-RN - Professor - Sistemas de Informação) 
Analise o seguinte código escrito em Python, que define a estrutura da classe ContaBancaria: 
 
Sobre a classe acima e as regras de programação orientada a objetos em Python, a 
(a) criação de objetos chama primeiro o método __init__() e, em seguida, o __new__(). 
(b) palavraself deve ser fornecida como argumento em todos os métodos de instâncias. 
(c) variável num_contas é encapsulada e individual para cada instância da classe. 
(d) palavra @static escrita antes da definição do método sacar() torna o método estático. 
 
42. (NC-UFPR - 2017 - ITAIPU BINACIONAL - Profissional de Nível Superior Jr - Computação ou 
Informática – Suporte) 
Três tipos de dados fundamentais em Python são as listas (“lists”), sequências ou ‘tuplas’ (“tuples”) e dicionários 
(“dictionaries”). A respeito dessas estruturas, é correto afirmar: 
(a) Listas não podem ser modificadas depois de criadas, ao passo que sequências e dicionários podem. 
(b) Listas podem ser modificadas, mas seu tamanho não pode ser modificado após a criação, ao passo que 
sequências e dicionários não têm essa limitação. 
(c) Dicionários não podem ser modificados depois de criados, ao passo que listas e sequências podem. 
(d) Listas e sequências são indexadas por inteiros, ao passo que dicionários podem ser indexados por “strings”. 
(e) Listas e dicionários são indexados por inteiros, ao passo que sequências podem ser indexadas por “strings”. 
 
 
Prof. Hamilton Rodrigues 
 
 
92 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
43. (IF-CE - 2017 - IF-CE - Técnico de Laboratório - Informática) 
Considere o trecho do programa Python abaixo. 
 
Os valores impressos, ao se executar o programa, são, respectivamente, 
(a) 1 e 1 
(b) 10 
(c) 1 e 10 
(d) 10 e 1 
(e) 10 e 10 
 
44. (IFB - 2017 - IFB - Professor - Informática/ Desenvolvimento de Sistemas) 
Dado o código em Python abaixo, assinale a alternativa que contém a sequência CORRETA de números da saída 
gerada pelos comandos “print”: 
 
(a) 64, 32, 1024, 1024, 512 
(b) 32, 16, 512, 1024, 256 
(c) 64, 32, 512, 1024, 256 
(d) 64, 32, 1024, 1024, 256 
(e) 32, 16, 512, 1024, 512 
 
 
Prof. Hamilton Rodrigues 
 
 
93 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
45. (IFB - 2017 - IFB - Professor - Informática/ Desenvolvimento de Sistemas) 
Analise o trecho de código escrito em Python versão 3 a seguir: 
dados = [[“maria”,18], [“carlos”,16], [“alex”,17], [“sandra”,15]] 
for i in dados: 
print(i[1]) 
Marque a alternativa que apresenta a saída impressa no console. 
(a) 15 
16 
17 
18 
 (d) alex 
carlos 
maria 
sandra 
(b) 18 
16 
17 
15 
 (e) maria 18 
carlos 16 
alex 17 
sandra 15 
(c) maria 
carlos 
alex 
sandra 
 
 
46. (IFB - 2017 - IFB - Professor - Informática/ Desenvolvimento de Sistemas) 
Com relação a Algoritmos e Estrutura de Dados, dadas as afirmações abaixo, segundo Farrer (1999), assinale a 
alternativa CORRETA: 
(a) Python é uma linguagem compilável, a qual, após esse processo, gera um arquivo executável, do tipo 
binário. 
(b) A declaração de variáveis é algo obrigatório em Python. 
(c) Python é uma linguagem procedural a qual não contempla orientação a objetos. 
(d) Listas, em Python, são conjuntos de valores, os quais só podem ser do mesmo tipo, acessados por um 
índice numérico que inicia em 0 (zero). 
(e) Em comandos condicionais ou de repetição, a separação de blocos de código em Python é feita utilizando 
a indentação. 
 
 
Prof. Hamilton Rodrigues 
 
 
94 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
47. (IFB - 2017 - IFB - Professor - Informática/ Desenvolvimento de Sistemas) 
Dado o código em Python abaixo, assinale a alternativa que contém a saída CORRETA gerada pelo “print”: 
 
(a) galinha 
(b) ga 
(c) t 
(d) gato 
(e) to 
 
48. (IFPI - 2016 - IF-PI - Professor - Informática) 
Considere o seguinte trecho de um programa escrito na linguagem Python. 
 
Selecione a alternativa que contém as duas linhas geradas na tela de saída, após a execução do programa ilustrado 
acima: 
(a) Linha 1: Sou uma maquina 
Linha 2: Sou um robô 
 
(b) Linha 1: Sou um robo 
Linha 2: Sou um robô 
 
Prof. Hamilton Rodrigues 
 
 
95 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
(c) Linha 1: Sou um robo 
Linha 2: Sou uma maquina 
 
(d) Linha 1: Sou um robo, maquina 
Linha 2: Sou uma maquina, robô 
 
(e) Linha 1: Sou uma maquina 
Linha 2: Sou uma maquina 
 
49. (CESGRANRIO - 2016 - UNIRIO - Técnico em Tecnologia da Informação) 
Considere o seguinte código em Python 
 
A saída na tela após a execução será 
(a) Fulano m 
(b) Fulano 2500.0 
(c) Fulano de Tal m 
(d) Fulano de Tal 2500.0 
(e) Fulano de Tal m 2500.0 
 
50. (FGV - 2015 - PGE-RO - Técnico da Procuradoria - Tecnologia da Informação) 
Na linguagem Python 2.7, um comando como 
a=input("XXX") 
provoca: 
(a) a definição de uma referência a um arquivo que deverá ser utilizado no modo somente leitura; 
(b) a criação de uma lista de valores denominada “a" cujo elemento inicial é a string “XXX"; 
(c) a leitura de um valor do arquivo de entrada correntemente designado de acordo com um formato expresso 
pela string “XXX"; 
(d) um prompt no dispositivo de saída e a leitura de um valor que é armazenado na variável “a"; 
(e) a associação à variável “a" de uma função denominada “XXX" que pertence à biblioteca “input". 
 
 
Prof. Hamilton Rodrigues 
 
 
96 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Gabarito 
1. C 
2. D 
3. B 
4. Errado 
5. Errado 
6. Errado 
7. E 
8. C 
9. D 
10. B 
11. A 
12. D 
13. D 
14. Errado 
15. C 
16. D 
17. A 
18. B 
19. C 
20. C 
21. D 
22. B 
23. B 
24. D 
25. Certo 
26. Errado 
27. Errado 
28. A 
29. C 
30. D 
31. C 
32. A 
33. Certo 
34. D 
35. E 
36. Certo 
37. B 
38. D 
39. E 
40. D 
41. B 
42. D 
43. C 
44. A 
45. B 
46. E 
47. C 
48. E 
49. B 
50. D 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Prof. Hamilton Rodrigues 
 
 
97 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Resumo Direcionado 
O programa escrito em Python é um arquivo texto com extensão .py. Após compilado, ele vira um bytecode 
que é interpretado pela máquina virtual Python. 
 
O bytecode é multiplataforma. Qualquer sistema que possua máquina virtual Python pode executar o 
bytecode sem necessidade de recompilação. 
 
 
 
Prof. Hamilton Rodrigues 
 
 
98 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
A linguagem suporta diversos paradigmas de programação. 
Multiparadigma em Python 
F Funcional 
I Imperativa 
P Procedural 
O Orientada a Objeto 
 
 
A tipagem das variáveis é dinâmica e forte. 
Características de tipagem das variáveis Python 
Tipagem dinâmica 
O tipo de variável pode mudar ao longo 
do programa 
Tipagem forte 
Não pode fazer operações com tipos 
incompatíveis 
 
 
Prof. Hamilton Rodrigues 
 
 
99 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Os principais tipos de dados suportados são os seguintes. 
Tipo Descrição Exemplos 
Números 
Inclui tipos numéricos como inteiros, 
reais, imaginários, hexadecimais, 
booleanos, entre outros. 
123, 3.1415, 1+2j, 0x9ff, True, False 
Strings Cadeias de caracteres. “laranja”, “maçã”, “José1” 
Listas 
Sequência mutável de objetos de 
tamanho variável. 
[1, 2, “João”], [“login”,”senha”], 
[234, [12.5, “spam”], 9+3j] 
Dicionários 
Estrutura de dados de mapeamento de 
uma chave em um valor. 
{“laranja” : 5.00, “maçã” : 7.40} 
{“love” : “amor”, “book” : “livro”} 
Tuplas 
Sequência imutável de objetos. Seus 
valores não podem mudar. 
(1, “gato”, 15.45) 
Arquivos 
Referência para o conteúdo de arquivos 
em disco 
open(‘C:\meuarquivo.txt’) 
Conjuntos 
Sequência não ordenada de objetos 
únicos. O conjunto em si é mutável, mas 
seus elementos são imutáveis. 
{‘a’, ‘b’, ‘c’} 
{1, 12.3, 45, “New York”} 
None 
Representa o nada. Equivalente ao null 
em outras linguagens. 
None 
Outros 
Funções, módulose classes também são 
tipos. 
 
 
Coleção 
Pode substituir os valores 
dos elementos? 
Pode acrescentar/remover 
elementos? 
Forma de indexação dos 
elementos 
Lista Sim Sim Inteiro 
Tupla Não Não Inteiro 
Dicionário Sim Sim String 
 
Prof. Hamilton Rodrigues 
 
 
100 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Operadores numéricos. 
Operação Descrição 
X + Y Adição 
X - Y Subtração 
X * Y Multiplicação 
X / Y Divisão 
X ** Y Exponenciação 
 
Operadores relacionais ou booleanos. 
Operação Descrição 
X < Y Menor 
X <= Y Menor ou igual 
X > Y Maior 
X >= Y Maior ou igual 
X == Y Igual 
X != Y Diferente 
X is Y Testa se X e Y são o mesmo objeto 
X is not Y Testa se X e Y não são o mesmo objeto 
X < Y < Z Comparação tripla 
not X Inverte o valor lógico de X 
 
 
Prof. Hamilton Rodrigues 
 
 
101 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Operadores sequenciais 
Operação Descrição 
X in S Verifica se o elemento X pertence à 
sequência S 
X not in S Verifica se o elemento X não pertence à 
sequência S 
S1 + S2 Concatena as sequências S1 e S2 
n * S Repete n vezes a sequência S 
S[i:j] Fatia a sequência S entre os índices i e j 
len(S) Retorna o tamanho de S 
min(S) Retorna o mínimo elemento de S 
max(S) Retorna o máximo elemento de S 
for X in S Percorre todos os elementos de S 
armazenando o elemento corrente em X 
del S[i] Deleta o elemento localizado no índice i 
 
Estruturas de controle 
 
 
 
Prof. Hamilton Rodrigues 
 
 
102 de 102| www.direcaoconcursos.com.br 
Python 
Informática p/ Agente da PCDF 
Estruturas de repetição 
Estrutura de repetição Finalidade 
for Executar repetidamente por um número 
determinado de vezes 
for-else Igual o for só que com um bloco else a 
ser executado obrigatoriamente após os 
loops 
while Executar repetidamente enquanto uma 
condição for verdadeira 
while-else Igual o while só que com um bloco else 
a ser executado obrigatoriamente após 
os loops 
 
	Sumário
	Linguagem Python
	Introdução
	Tipos de dados
	Coleções
	Manipulação de listas
	Trabalhando com ranges
	Manipulação de strings
	Operadores
	Operadores numéricos
	Operadores relacionais e booleanos
	Operadores sequenciais
	Estruturas de decisão
	if
	if-else
	if-elif-else
	Estruturas de repetição
	for
	for-else
	while
	while-else
	Funções
	Classes
	Questões comentadas pelo professor
	Lista de questões comentadas
	Gabarito
	Resumo Direcionado

Mais conteúdos dessa disciplina