Teste Final Resposta
Teste Final Resposta
Muito bem! Você chegou ao fim do curso e concluiu um grande marco na sua formação
em programação em Python.
Agora você está pronto para aceitar o desafio final, o Teste Final , que o ajudará a
revisar as informações mais importantes que você leu e testar as habilidades e os
conhecimentos adquiridos ao longo do curso.
O teste final é baseado no que você aprendeu em todo o curso. Há dez perguntas no
total e você precisa marcar pelo menos 70% para passar. Boa sorte!
Pergunta 1
1
2
3
4
5
6
7
my_list = [1, 2]
for v in range(2):
my_list.insert(-1, my_list[v])
print(my_list)
[2, 1, 1, 2]
botão_de_rádio_desmarcado
[1, 2, 2, 2]
sinal_celular_4_bar
[1, 2, 1, 2]
[1, 1, 1, 2]
Pergunta 2
seu valor
botão_de_rádio_desmarcado
sua posição na lista de argumentos
sinal_celular_4_bar
o nome do argumento especificado junto com seu valor
sua conexão com as chaves existentes
Argumentos posicionais podem ser chamados por sua posição em uma chamada de
função e, portanto, devem ser incluídos na ordem correta.
Pergunta 3
Quais das seguintes frases são verdadeiras sobre o código? (Selecione duas respostas)
1
2
3
nums = [1, 2, 3]
vals = nums
Atribuir nums a vals cria uma situação em que a mesma lista (ou seja, [1, 2, 3]) tem dois
nomes diferentes. Atribuir um novo nome a uma lista atual, no nosso caso, vals para
nums, é chamado de alias. E como nums e vals são dois nomes diferentes que se
referem ao mesmo objeto, eles também têm o mesmo comprimento (3).
Pergunta 4
Um operador capaz de verificar se dois valores não são iguais é codificado como:
<>
botão_de_rádio_desmarcado
não ==
sinal_celular_4_bar
=/=
!=
Pergunta 5
O seguinte trecho:
1
2
3
4
5
6
7
8
9
10
def function_1(a):
return None
def function_2(a):
return function_1(a) * function_1(a)
print(function_2(2))
Produzirá16
Produzirá2
Produzirá4
botão_de_rádio_desmarcado
causará um erro de execução
sinal_celular_4_bar
O objeto None não tem operadores aritméticos definidos - o programa gerará a
exceção TypeError, porque o tipo NoneType não pode ser o operando do operador *.
Pergunta 6
O operador // divide dois números e arredonda o resultado para o número inteiro mais
próximo. Como 1 dividido por 2 é 0.5, o número resultante é arredondado para 0.
Pergunta 7
O seguinte trecho:
1
2
3
4
5
6
def func(a, b):
return b ** a
print(func(b=2, 2))
ProduziráNenhum
Produzirá2
botão_de_rádio_desmarcado
está errado
sinal_celular_4_bar
Produzirá4
Pergunta 8
1
2
3
4
z = 0
y = 10
x = y < z and z > y or y < z and z < y
botão_de_rádio_desmarcado
0
sinal_celular_4_bar
Verdadeiro
1
Falso
0 é atribuído a z, e 10 é atribuído a y,
o resultado da avaliação a seguir y < z and z > y or y < z and z < y é atribuído
a x:
y < z avalia como Falso,
z > y é avaliado como Falso,
y < z avalia como Falso novamente,
e z < y é avaliado como Verdadeiro.
E agora: Falso and Falso é Falso; Falso or Falso é Falso; e finalmente
False and True é Falso.
Pergunta 9
Quais dos seguintes nomes de variáveis são ilegais e causarão a exceção SyntaxError?
(Selecione duas respostas)
Em
para
caixa_de_seleção_contorno_em_branco
imprimir
sinal_celular_4_bar
em
Os nomes in e for são palavras reservadas do Python (palavras-chave). Eles não podem
ser usados como nomes de variáveis. Observe que o nome print não é uma palavra
reservada do Python e pode ser usado como um nome de variável, caso em que irá
sobrepor a função interna do Python, print().
Pergunta 10
1
2
3
4
5
6
7
8
9
10
my_list = [x * x for x in range(5)]
def fun(lst):
del lst[lst[2]]
return lst
print(fun(my_list))
[0, 1, 4, 9]
[1, 4, 9, 16]
botão_de_rádio_desmarcado
[0, 1, 9, 16]
sinal_celular_4_bar
[0, 1, 4, 16]
Pergunta 11
1
2
3
4
5
6
7
x = 1
y = 2
x, y, z = x, x, y
z, y, z = x, y, z
print(x, y, z)
112
121
botão_de_rádio_desmarcado
122
sinal_celular_4_bar
212
x=1ey=2
como resultado da primeira atribuição de várias variáveis (Linha 3), x = 1, y =
1ez=2
como resultado da segunda atribuição de várias variáveis (Linha 4), z = x = 1, y
= y = 1, e z = z = 2 (porque a atribuição original da linha anterior agora substitui
a primeira atribuição z da atual linha)
portanto, o resultado impresso na tela é 1 1 2 .
Pergunta 12
1
2
3
4
5
6
7
8
a = 1
b = 0
a = a ^ b
b = a ^ b
a = a ^ b
print(a, b)
00
botão_de_rádio_desmarcado
11
sinal_celular_4_bar
10
01
Pergunta 13
1
2
3
4
5
6
7
8
9
def fun(x):
if x % 2 == 0:
return 1
else:
return 2
print(fun(fun(2)))
Nenhum
1
o código causará um erro de tempo de execução
botão_de_rádio_desmarcado
2
sinal_celular_4_bar
A função print () na linha 8 usa a função fun () como argumento, que usa outra
função fun () como argumento, que, por sua vez, usa o valor 2 como argumento.
Pergunta 14
del lst[lst[2]]
return lst
print(fun(my_list))
1
2
3
4
nums = [1, 2, 3]
vals = nums
del vals[:]
Atribuir nums a vals cria uma situação em que a mesma lista (ou seja, [1, 2, 3]) tem dois
nomes diferentes. Atribuir um novo nome a uma lista atual, no nosso caso, vals para
nums, é chamado de alias. E como nums e vals são dois nomes diferentes que se
referem ao mesmo objeto, eles também têm o mesmo comprimento.
A instrução del esvazia a lista apontada por numse vals, o que significa que a lista tem
um comprimento zero, o que significa que nums e vals têm o mesmo comprimento.
Pergunta 15
1
2
3
4
5
6
7
x = int(input())
y = int(input())
x = x % y
x = x % y
y = y % x
print(y)
1
3
botão_de_rádio_desmarcado
0
sinal_celular_4_bar
2
x=3ey=2
Linha 3: x = 3% 2 = 1
Linha 4: x = 1% 2 = 1
Linha 5: x = 2% 1 = 0
o resultado é impresso na tela.
Pergunta 16
1
2
3
4
y = input()
x = input()
print(x + y)
6
3
63
botão_de_rádio_desmarcado
36
sinal_celular_4_bar
É uma pergunta pegadinha por dois motivos:
Motivo um: a função input () converte os dados inseridos pelo usuário em
uma sequência de caracteres, e o resultado da adição de duas sequências é
colá-las: "string" + "string" = "stringstring" (concatenação).
Motivo dois: a primeira entrada do usuário é atribuída à variável y, enquanto a
segunda à variável x. No entanto, eles são impressos na ordem inversa.
Pergunta 17
1
2
print("a", "b", "c", sep="sep")
abc
abc
botão_de_rádio_desmarcado
asepbsepcsep
sinal_celular_4_bar
asepbsepc
A função print() imprime as seqüências de caracteres "a", "b" e "c" na tela e as separa
com a sequência "sep". O parâmetro sep palavra-chave determina o tipo de separador
usado entre os argumentos subsequentes print() na tela.
Pergunta 18
1
2
3
x = 1 // 5 + 1 / 5
print(x)
0
0,5
botão_de_rádio_desmarcado
0,2
sinal_celular_4_bar
0,4
Pergunta 19
Supondo queminha_tuplaé uma tupla criada corretamente, o fato de que as tuplas são
imutáveis significa que a seguinte instrução:
1
2
my_tuple[1] = my_tuple[1] + my_tuple[0]
Pergunta 20
1
2
3
4
x = float(input())
y = float(input())
print(y ** (1 / x))
4.2
0,0
1.0
botão_de_rádio_desmarcado
2.0
sinal_celular_4_bar
Vejamos o que acontece:
o usuário digita 2, que é convertido em um número flutuante e atribuído à
variável x
o usuário digita 4, que é convertido em um número flutuante e atribuído à
variável y
o resultado da seguinte avaliação é impresso na tela: 4 ** (1/2) = 4 ** 0.5 = 2.0
Pergunta 21
1
2
3
4
5
6
7
8
dct = {'one': 'two', 'three': 'one', 'two': 'three'}
v = dct['three']
for k in range(len(dct)):
v = dct[v]
print(v)
Pergunta 22
1
2
lst = [i for i in range(-1, -2)]
hum
dois
botão_de_rádio_desmarcado
três
sinal_celular_4_bar
zero
A lista lst está vazia, porque a função range(), que consiste na compreensão da lista,
define o parâmetro start com o valor inicial de -1 e o parâmetro de parada com o
valor stop de -2 (o parâmetro stop tem um valor mais baixo valor do que o
parâmetro start, o que torna impossível criar uma sequência).
Pergunta 23
1
2
3
def fun(a, b, c=0):
# Cuerpo de la función.
diversão(b=1)
diversão(b=0, a=0)
caixa_de_seleção_contorno_em_branco
diversão(0, 1, 2)
sinal_celular_4_bar
caixa_de_seleção_contorno_em_branco
diversão()
sinal_celular_4_bar
Como o argumento c é um argumento de palavra-chave com um valor padrão
especificado, basta chamar a função especificando os valores padrão para os dois
argumentos de palavra-chave restantes, a e b. Também é possível substituir um valor
padrão de parâmetro de palavra-chave por uma chamada de função com argumentos
poscionais: fun (0, 1, 2). Em ambos os casos, é importante que todos os parâmetros de
função sejam atendidos.
Pergunta 24
Qual é a saída do seguinte snippet?
1
2
3
4
5
6
7
8
9
def fun(x, y):
if x == y:
return x
else:
return fun(x, y-1)
print(fun(0, 3))
Os dois argumentos a seguir são enviados para a função fun (x, y): 0 e 3. O resultado da
comparação x == y é False, então o bloco else: é acionado.
No bloco else:, a chamada de função fun (x, y-1) é retornada, e desta vez os dois
argumentos a seguir são enviados: x = 0 e y = 3 - 1 = 2. O processo é repetido (x = 0, y
= 2 - 1 = 1 e x = 0, y = 1 - 1 = 0) até que o valor atribuído à variável y seja igual a 0,
caso em que o resultado da x == y Comparação é True, e a função retorna o
valor x de 0.
Pergunta 25
1
2
3
4
5
6
7
i = 0
while i < i + 2 :
i += 1
print("*")
else:
print("*")
botão_de_rádio_desmarcado
o snippet entrará em um loop infinito, imprimindo uma estrela por linha
sinal_celular_4_bar
1
0
2
Pergunta 26
1
2
3
4
5
tup = (1, 2, 4, 8)
tup = tup[-2:-1]
tup = tup[-1]
print(tup)
44
botão_de_rádio_desmarcado
4
sinal_celular_4_bar
(4)
(4,)
1
2
3
4
dd = {"1": "0", "0": "1"}
for x in dd.vals():
print(x, end="")
Pergunta 28
1
2
3
4
5
6
7
dct = {}
dct['1'] = (1, 2)
dct['2'] = (2, 1)
for x in dct.keys():
print(dct[x][1], end="")
botão_de_rádio_desmarcado
21
sinal_celular_4_bar
(1,2)
(2,1)
12
Pergunta 29
1
2
3
4
5
6
def fun(inp=2, out=3):
return inp * out
print(fun(out=2))
botão_de_rádio_desmarcado
O trecho está errado e causará SyntaxError
sinal_celular_4_bar
6
4
2
O valor padrão (3) atribuído ao argumento outda definição da função fun() foi alterado
para2 na chamada da função fun() passada como o argumento para a função print().
Dessa forma, o resultado da avaliação (inp = 2) * (out = 2) é igual a 4 .
Pergunta 30
1
2
3
4
5
6
7
lst = [[x for x in range(3)] for y in range(3)]
for r in range(3):
for c in range(3):
if lst[r][c] % 2 != 0:
print("#")
botão_de_rádio_desmarcado
zero
sinal_celular_4_bar
três
seis
nove
Linha 1: estamos usando uma compreensão de lista para criar a seguinte matriz
bidimensional:
[[0, 1, 2], [0, 1, 2], [0, 1, 2]]
o programa insere o primeiro loop for com a variável de iteração r, tomando o
valor do primeiro item dentro da sequência gerada pela função range(3), que é 0.
Em seguida, o programa insere o segundo loop for (aninhado) com a variável de
iteração c, recebendo o valor do primeiro item dentro da sequência gerada pela
função range(3), que é 0. A seguinte condição é verificada:
if lst[0][0] % 2 != 0, imprima um hash (#) na tela. O valor retornado da
lista lst armazenada nos índices [0][0] é 0, então a condição é avaliada como
falsa (0 % 2 != 0 → False), o que significa que um hash não é impresso na tela
no momento, e a execução do programa retorna ao loop externo. As iterações
são repetidas para os seguintes pares de índice: [0][1], [0][2], [1][2], [1]
[0], [1][1], [1][2], [2][2], [2][0], [2][1], e [2][2].
a função print() imprime um hash quando os seguintes pares de índice se tornam
parte da verificação condicional:
[0][1] → 1 porque se 1 % 2 != 0 for avaliado como True
[1][1] → 1 porque se 1 % 2 != 0 for avaliado como True
[2][1] → 1 porque se 1 % 2 != 0 for avaliado como True
Portanto, a função print() produzirá três hashes na tela.
Pergunta 31
1
2
3
4
5
6
7
8
9
10
11
12
try:
value = input("Digite um valor: ")
print(int(value)/len(value))
except ValueError:
print("Entrada ruim...")
except ZeroDivisionError:
print("Entrada muito ruim...")
except TypeError:
print("Muito, muito ruim entrada...")
except:
print("Booo!")
0,0
1.0
botão_de_rádio_desmarcado
Entrada ruim...
sinal_celular_4_bar
Entrada muito ruim...
Muito, muito ruim entrada...
Buuu!
O programa imprimirá 0.0 porque a seguinte expressão int (0) / len ("0") é avaliada
como 0.0 (0/1 → 0.0), então o fluxo do programa não entra em nenhuma das
clausulas exceptas, e nenhuma exceção é gerada.
Pergunta 32
1
2
3
4
5
6
7
8
try:
print(5/0)
break
except:
print("Desculpe, algo deu errado...")
except (ValueError, ZeroDivisionError):
print("Muito ruim...")
Lembre-se que o analisador analisa o programa antes de sua execução, portanto, se ele
encontrar um erro de sintaxe, o programa não será executado. Se o código não
apresentar erros de sintaxe, o programa é executado e pode gerar outros tipos de
exceções.
Pergunta 33
1
2
3
foo = (1, 2, 3)
foo.index(0)
botão_de_rádio_desmarcado
O programa exibirá1na tela.
sinal_celular_4_bar
O programa causará uma exceçãoValorErro.
O programa causará uma exceçãoErro de atributo.
O programa causará uma exceçãoErro de sintaxe.
O programa causará uma exceção Erro de tipo.
O programa gerará uma exceção ValueError, porque o método index () da tupla retorna
o índice de um determinado elemento em uma tupla, e a tupla foo não tem o elemento 0.
Pergunta 34
Qual dos seguintes snippets mostra a maneira correta de lidar com várias exceções em
uma única cláusula except ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# A:
except (TypeError, ValueError, ZeroDivisionError):
# Algo de código.
# B:
except TypeError, ValueError, ZeroDivisionError:
# Algo de código.
# C:
except: (TypeError, ValueError, ZeroDivisionError)
# Algo de código.
# D:
except: TypeError, ValueError, ZeroDivisionError
# Algo de código.
# E:
except (TypeError, ValueError, ZeroDivisionError)
# Algo de código.
# F:
except TypeError, ValueError, ZeroDivisionError
# Algo de código.
AeB
Lá, Dó e Ré
Si e Dó
Somente A
botão_de_rádio_desmarcado
AeF
sinal_celular_4_bar
DeE
Apenas F
A seguinte sintaxe:
é a única opção correta para lidar com várias exceções internas em uma única
cláusula except.
Pergunta 35
1
2
print(¡Hola Mundo!)
O programa não gera uma exceção NameError, porque o nome World! contém um
caractere ilegal: !, e Hello e World! não podem ser considerados nomes de variáveis que
não foram reconhecidos pelo Python.
Lembre-se que você pode retornar ao módulo para referência ou refazer o exame a
qualquer momento.