- InfinitePy Newsletter 🇧🇷
- Posts
- Descubra Python: Questões Diárias para Todos os Níveis.
Descubra Python: Questões Diárias para Todos os Níveis.
Bem-vindo(a) ao nosso desafio diário de Python! Como amantes e entusiastas dessa linguagem incrível, criamos um espaço onde você pode aprimorar suas habilidades e testar seus conhecimentos todos os dias.
A cada dia, postaremos uma nova questão de Python, abrangendo desde conceitos básicos até tópicos avançados. Quer você seja um iniciante ansioso para aprender ou um programador experiente buscando novos desafios, nossos exercícios são projetados para todos. Junte-se a nós nessa jornada de aprendizado contínuo.
🔔 Assine o InfinitePy Newsletter para mais recursos e uma abordagem passo a passo para aprender Python, e fique atualizado com as últimas tendências e dicas práticas.
Todos os exemplos também são explicados aqui 👨🔬, um notebook Google Colab para tornar seu aprendizado ainda mais interativo.
InfinitePy Newsletter - Sua fonte de aprendizado e inspiração em Python.
Questão • 4E9E
31 de julho de 2024
Qual é a saída para o código Python abaixo?
import pandas as pd data = {'Nome': ['Alice', 'João', 'Carlos', 'David', 'Evandro'], 'Idade': [24, 27, 22, 32, 29], 'Cidade': ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Salvador', 'Brasília']} df = pd.DataFrame(data)
Resposta
df.loc[2, 'Idade']
Vamos analisar o código passo a passo:
# Importando a biblioteca pandas e dando-lhe o apelido 'pd' import pandas as pd # Criando um dicionário com dados fictícios # O dicionário contém três chaves: 'Nome', 'Idade' e 'Cidade' # Cada chave está associada a uma lista de valores data = { 'Nome': ['Alice', 'João', 'Carlos', 'David', 'Evandro'], # Lista de nomes 'Idade': [24, 27, 22, 32, 29], # Lista de idades relacionadas aos nomes 'Cidade': ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte', 'Salvador', 'Brasília'] # Lista de cidades } # Criando um DataFrame (estrutura de dados tabular) a partir do dicionário 'data' df = pd.DataFrame(data)
As próximas tentativas de acesso causariam os seguintes erros:
df[Idade][2]
Este comando causa um erro porque 'Idade' não está definido como uma variável.
Para acessar a coluna 'Idade', você deve usar uma string (entre aspas): df['Idade'][2]
df.iloc[2, 'Idade']
Este comando causa um erro porque 'iloc' apenas permite indexação por posição inteira.
No 'iloc', você deve usar apenas números inteiros: df.iloc[2, 1] ou colunas selecionadas por nomes dentro de colchetes duplos
df.ix[2, 'Idade']
Este comando causa um erro porque 'ix' foi depreciado e não existe nas versões mais recentes do pandas.
Use 'loc' ou 'iloc' como alternativas apropriadas dependendo do seu caso.
Questão • 8A13
30 de julho de 2024
Qual é a saída para o código Python abaixo?
minha_lista = [[1, 2], [3, 4], [5, 6]] resultado = [p + q for p, q in minha_lista] print(resultado)
Resposta
[3, 7, 11]
Vamos analisar o código passo a passo:
# Definimos uma lista de listas, onde cada sublista possui dois elementos. minha_lista = [[1, 2], [3, 4], [5, 6]] # Usamos uma list comprehension para iterar sobre cada sublista em 'minha_lista'. # Para cada sublista, descompactamos os dois elementos em 'p' e 'q' e somamos 'p' com 'q'. # O resultado de cada soma é adicionado à nova lista 'resultado'. resultado = [p + q for p, q in minha_lista] # Imprimimos a lista 'resultado', que contém as somas dos elementos de cada sublista em 'minha_lista'. print(resultado) # Saída: [3, 7, 11]
Questão • S8E8
29 de julho de 2024
Qual é a saída para o código Python abaixo?
lista = ["InfinitePy", [2024, 7, 29], 3 + 4j] print(lista[1][2])
Resposta
29
Vamos analisar o código passo a passo:
# Definimos uma lista chamada 'lista' com três elementos # 'InfinitePy' é o primeiro elemento, uma string # [2024, 7, 29] é o segundo elemento, uma lista contendo três números # 3 + 4j é o terceiro elemento, um número complexo lista = ["InfinitePy", [2024, 7, 29], 3 + 4j] # Aqui estamos tentando imprimir o terceiro elemento do segundo elemento da lista principal # Em outras palavras, estamos acessando o terceiro elemento da sub-lista [2024, 7, 29] print(lista[1][2]) # Isso deve imprimir o valor 29
Questão • A77B
28 de julho de 2024
Qual é a saída para o código Python abaixo?
def divisao(a, b): try: resultado = a / b except ZeroDivisionError: print("Erro: Não é possível dividir por zero.") return None finally: print("Execução concluída.") return resultado # Casos de teste print(divisao(10, 0))
Resposta
Erro: Não é possível dividir por zero.
Execução concluída.
None
Vamos analisar o código passo a passo:
def divisao(a, b): # Tenta executar a divisão dos números fornecidos try: resultado = a / b except ZeroDivisionError: # Trata o erro caso a divisão por zero seja tentada print("Erro: Não é possível dividir por zero.") return None # Retorna None se houver um erro de divisão por zero finally: # Este bloco será executado independente do resultado da divisão print("Execução concluída.") # Retorna o resultado da divisão se não houver erros return resultado # Casos de teste para a função de divisão print(divisao(10, 0)) # Testa a divisão por zero, que deve acionar o tratamento de erro
Em Python, as instruções try, except e finally são usadas para lidar com exceções (erros) que podem ocorrer durante a execução do código. Aqui está uma explicação detalhada:
Instrução try
A instrução try é usada para envolver um bloco de código que pode causar uma exceção. Se uma exceção ocorrer, a execução do código no bloco try é interrompida e passa para o bloco except.
Instrução except
O bloco except permite lidar com a exceção de uma maneira controlada. Você pode especificar diferentes exceções para capturar e tratá-las de maneiras diferentes. Se nenhum tipo de exceção específico for fornecido, o except capturará todas as exceções.
Instrução finally
O bloco finally contém código que será executado independentemente de uma exceção ter sido lançada ou não. É frequentemente usado para liberar recursos ou realizar alguma limpeza necessária.
Questão • B1E6
27 de julho de 2024
Qual é a saída para o código Python abaixo?
def foo(a, b, *args, **kwargs): result = a + b result += sum(args) result += sum(kwargs.values()) return result print(foo(1, 2, 3, 4, x=5, y=6))
Resposta
21
Vamos analisar o código passo a passo:
def foo(a, b, *args, **kwargs): """ Adiciona os dois primeiros argumentos, qualquer número de argumentos posicionais adicionais e os valores de quaisquer argumentos de palavra-chave. Parâmetros: a (int ou float): O primeiro número. b (int ou float): O segundo número. *args (int ou float): Números adicionais. **kwargs (int ou float): Argumentos nomeados. Retorna: int ou float: A soma de todos os números de entrada. """ # Soma dos dois primeiros argumentos posicionais obrigatórios result = a + b # Adicionando a soma de quaisquer argumentos posicionais adicionais result += sum(args) # Adicionando a soma dos valores de quaisquer argumentos de palavra-chave adicionais result += sum(kwargs.values()) return result # Exemplo de uso print(foo(1, 2, 3, 4, x=5, y=6))
A palavra args é uma abreviação de "arguments" (ou "argumentos" em Português). Quando você usa *args em uma função, você está basicamente permitindo que essa função receba um número variável de argumentos posicionais. Vamos ver um exemplo:
def soma(*args): return sum(args) print(soma(1, 2, 3)) # Saída: 6 print(soma(5, 10, 15, 20)) # Saída: 50
No exemplo acima, a função soma pode aceitar qualquer número de argumentos posicionais, e dentro dela, esses argumentos são tratados como uma tupla.
A palavra kwargs é uma abreviação de "keyword arguments" (ou "argumentos nomeados" em Português). Quando você usa **kwargs em uma função, você está permitindo que essa função receba um número variável de argumentos nomeados. Vamos ver um exemplo:
def exibir_informacoes(**kwargs): for chave, valor in kwargs.items(): print(f"{chave}: {valor}") exibir_informacoes(nome="Ana", idade=30, cidade="São Paulo")
No exemplo acima, a função exibir_informacoes pode aceitar qualquer número de argumentos nomeados, e dentro dela, esses argumentos são tratados como um dicionário.
Questão • 9E0D
26 de julho de 2024
Quais métodos foram utilizados para a lista inicial chegar na lista final?
lista_inicial = ['🍇', '🍉', '🍊', '🍋', '🍌'] lista_final = ['🍑', '🍐', '🍎', '🍌', '🍋', '🍊', '🍉', '🍇']
Resposta
extend e reverse
Vamos analisar o código passo a passo:
# Definindo a lista inicial de emojis lista_inicial = ['🍇', '🍉', '🍊', '🍋', '🍌'] # Definindo a lista final desejada para comparação lista_final = ['🍑', '🍐', '🍎', '🍌', '🍋', '🍊', '🍉', '🍇'] # Novos itens que serão adicionados à lista inicial novos_itens = ['🍎', '🍐', '🍑'] # Operação 1 # Adiciona os novos itens ao final da lista_inicial usando o método extend lista_inicial.extend(novos_itens) # Operação 2 # Inverte a ordem dos elementos na lista_inicial usando o método reverse lista_inicial.reverse() print(lista_inicial) # Saída: ['🍑', '🍐', '🍎', '🍌', '🍋', '🍊', '🍉', '🍇']
A diferença entre os métodos append e extend em Python.
Ambos os métodos são usados para adicionar elementos a uma lista, mas operam de maneiras diferentes.
O método append adiciona seu argumento como um único elemento ao final de uma lista. O comprimento da lista aumentará em um.
O método extend itera sobre seu argumento, adicionando cada elemento à lista, estendendo a lista. O comprimento da lista aumentará por quantos elementos estavam no iterável.
Questão • 9CEF
25 de julho de 2024
Qual é a saída para o código Python abaixo?
chaves = ('a', 'b', 'c') valor = 0 dicionario = dict.fromkeys(chaves, valor) print(dicionario)
Resposta
{'a': 0, 'b': 0, 'c': 0}
Vamos analisar o código passo a passo:
# Definimos uma tupla chamada 'chaves' que contém três elementos: 'a', 'b' e 'c'. chaves = ('a', 'b', 'c') # Definimos uma variável chamada 'valor' e a inicializamos com o valor 0. valor = 0 # Utilizamos o método fromkeys da classe dict (dicionário) para criar um novo dicionário. # Este método cria um dicionário onde todas as chaves são os itens da tupla 'chaves' # e todos os valores associados a estas chaves são iguais ao valor definido em 'valor' (neste caso, 0). dicionario = dict.fromkeys(chaves, valor) # Imprimimos o dicionário resultante. print(dicionario)
Questão • 9CAA
24 de julho de 2024
Qual é a saída para o código Python abaixo?
items = ['🍫', '🍩', '🍪', '🧁', '🍦', '🍰', '🎂'] for item in items: if item == '🍪': print("🍪 foi encontrado!", end = " ") # break else: print("🍪 não foi encontrado na lista.", end = " ")
Resposta
🍪 foi encontrado! 🍪 não foi encontrado na lista.
Vamos analisar o código passo a passo:
# Lista de itens com diferentes emojis de sobremesas items = ['🍫', '🍩', '🍪', '🧁', '🍦', '🍰', '🎂'] # Loop para iterar sobre cada item na lista 'items' for item in items: # Condicional para verificar se o item atual é igual ao emoji de cookie ('🍪') if item == '🍪': # Imprime uma mensagem indicando que o cookie foi encontrado. # 'end = " "' impede que o print adicione uma nova linha automaticamente ao final. print("🍪 foi encontrado!", end = " ") # O comando 'break' foi comentado para que o loop não interrompa a sua execução ao encontrar o cookie. # Se descomentado, o loop pararia ao encontrar o primeiro cookie. # break # Este else pertence ao 'for', não ao 'if'. Ele executa se o loop termina sem que 'break' seja executado. else: # Como o comando break encontra-se comentado, imprime também a mensagem indicando que o cookie não foi encontrado. print("🍪 não foi encontrado na lista.", end = " ")
Questão • AE10
23 de julho de 2024
Qual é a saída para o código Python abaixo?
class MinhaClasse: def __init__(self, valor): self.valor = valor def imprime_valor(self): print(self.valor) obj = MinhaClasse(123) obj.imprime_valor()
Resposta
123
Vamos analisar o código passo a passo:
# Definimos uma classe chamada MinhaClasse class MinhaClasse: # Método inicializador da classe, também conhecido como construtor def __init__(self, valor): # 'self' é uma referência à instância atual da classe # Atributo 'valor' é inicializado com o valor passado como argumento self.valor = valor # Método da classe que imprime o valor do atributo 'valor' def imprime_valor(self): # Imprime o valor do atributo 'valor' da instância atual print(self.valor) # Criamos um objeto (ou instância) da classe MinhaClasse passando 123 como argumento obj = MinhaClasse(123) # Chamamos o método imprime_valor da instância 'obj', que irá imprimir o valor 123 obj.imprime_valor()
Definindo a classe e seu método inicializador (__init__
):
class MinhaClasse: def __init__(self, valor): self.valor = valor
class MinhaClasse: Define uma nova classe chamada MinhaClasse.
def init(self, valor): Este é o método inicializador da classe. Ele é chamado automaticamente quando criamos uma nova instância da classe.
self.valor = valor: Inicializa o atributo valor da instância com o valor passado como argumento ao criar a instância.
Método para imprimir o valor:
def imprime_valor(self): print(self.valor)
def imprime_valor(self): Define um método na classe que não recebe argumentos além de self.
print(self.valor): Imprime o valor do atributo valor da instância.
Criando uma instância da classe e chamando um método:
obj = MinhaClasse(123) obj.imprime_valor()
obj = MinhaClasse(123): Cria uma nova instância da classe MinhaClasse, passando 123 como argumento para o método __init__ . Isso configura o atributo valor da instância obj para 123.
obj.imprime_valor(): Chama o método imprime_valor da instância obj, que imprime o valor 123.
Questão • 98FD
22 de julho de 2024
Qual é a saída para o código Python abaixo?
lista = ['🥦', '🥕', '🌽', '🍅', '🌶️'] lista[1:3] = [] print(lista)
Resposta
['🥦', '🍅', '🌶️']
Comentários
Slicing: lista[1:3]
Este trecho seleciona uma fatia da lista começando do índice 1 até, mas não incluindo, o índice 3. Isso significa, os elementos nos índices 1 e 2.
Portanto, ele tem como alvo os elementos no índice 1 ('🥕') e no índice 2 ('🌽').
Atribuição: = []
Atribuir esta fatia a uma lista vazia [] remove efetivamente esses elementos.
A lista agora tem os elementos nessas posições removidos, resultando em '🥦', '🍅' e '🌶️'.