Revisão de Código Python: Loops, Funções e Estruturas de Dados

Classificado em Computação

Escrito em em português com um tamanho de 5,64 KB

Exemplos de Loops (For e While)

Exemplo 1: Usando for e while

Reescreva usando for:

x=5
while x <= 25:
  print(x)
  x=x+2

Equivalente com for:

for x in range(5, 26, 2):
  print(x)

Exemplo 2: Usando WHILE com um loop for aninhado (Correção de lógica)

O código original parecia misturar lógicas de iteração e atribuição de forma confusa. Abaixo, apresentamos as estruturas corrigidas:

Estrutura com for (assumindo a intenção de somar ou reatribuir):

# Usando for com range(2, 10, 3) -> 2, 5, 8
cont = 0
for x in range(2, 10, 3):
  cont = cont + x  # Soma os valores: 0+2=2, 2+5=7, 7+8=15
  cont = x         # Sobrescreve cont com o valor atual de x
  print(cont)      # Imprime 2, 5, 8 (pois cont é sobrescrito)

Estrutura com while (assumindo a intenção de somar):

x = 2
cont = 0
while x < 10:
  cont = cont + x
  print(cont)
  x = x + 3
# Iterações: x=2, cont=2; x=5, cont=7; x=8, cont=15

Funções com Listas

Função para Filtrar Elementos Maiores que um Número

Função que recebe uma lista e um número como parâmetro e gera uma nova lista apenas com os elementos maiores que o número. Fazer um programa que teste a função.

def maior(L, N):
  L2 = []
  for i in L:  # Corrigido: 'i in lista' para 'i in L'
    if i > N:
      L2.append(i)
  return L2

a = [2, 3, 9, 6]
x = maior(a, 5)
# Resultado esperado para x: [9, 6]

Tabela de rastreamento (Exemplo com a=[2,3,9,6] e N=5):

Globalmaior
xLNL2i
[0]9[0] 25[0]92
[1] 6[1] 3[1] 63
[2] 99
[3] 66

Contagem de Ocorrências em String

Ocorrência de Caractere em String:

def ocorrencia(c, s):
  qtd = 0
  for i in s:
    if i == c:
      qtd += 1
  return qtd

Verificação de Existência de Elemento em Lista

Existe x na lista:

def existe(lista, x):
  y = 0
  while y < len(lista):
    if lista[y] == x:
      return True  # Corrigido: 'true' para 'True'
    y = y + 1
  return False # Corrigido: 'false' para 'False'

a = [10, 3, 5]
x = existe(a, 10)
# x será True

Cálculo da Média de Números Maiores que 33

Função que recebe uma lista de reais como parâmetro e retorna a média dos números maiores que 33 existentes na lista.

def med33(L):
  s = 0
  c = 0
  x = 0
  while x < len(L):
    if L[x] > 33:  # Corrigido: 'if in L [x]' para 'if L[x]'
      s = s + L[x]
      c = c + 1
    x = x + 1
  if c > 0:
    return s / c
  else:
    return 0 # Evita divisão por zero

Soma e Contagem de Números Ímpares

Somente número ímpar (assumindo que 'lista' está definida no escopo):

# Exemplo: lista = [1, 2, 3, 4, 5]
s = 0
c = 0
for i in lista:
  if i % 2 == 1:
    s = s + i
    c = c + 1
print(s) # Imprime a soma dos ímpares

Operações Básicas com Sequências (Strings/Listas)

  • len(s): tamanho da sequência
  • s[1:3]: pegar elementos da posição desejada (índices 1 e 2)
  • s.count('a'): quantidade do parâmetro desejado
  • s.index(a): posição em que o parâmetro aparece pela primeira vez
  • Membership: verifica se o elemento pertence ou não na lista (i in list)
  • Concatenação: x = lis + [1, 2, 3]
  • Comparação: (1, 2) == (2, 1) -> False
  • min(lis): menor número da lista
  • max(lis): maior número da lista
  • sum(lis): soma da lista

Funções Relacionadas a Números Primos

1) Quantidade de Divisores

Função que recebe um número natural como parâmetro (n), e devolva a quantidade de divisores de n.

def qtd_div(n):
  qtd = 0
  for div in range(1, n + 1):
    if n % div == 0:
      qtd += 1
  return qtd

2) Verificação de Número Primo

Função que recebe um número natural como parâmetro (n), e devolva um valor booleano indicando se n é primo.

def primo(n):
  if qtd_div(n) == 2:
    return True
  else:
    return False

3) Exibir Primos em um Intervalo

Função que recebe como parâmetro dois números naturais i e f (i<=f), exiba todos os primos do intervalo [i,f].

def inter_primo(i, f):
  for num in range(i, f + 1):
    if primo(num):
      print(num)

4) Soma dos Primos em um Intervalo

Função que recebe como parâmetro dois números naturais i e f (i<=f), e devolva a soma dos primos do intervalo[i,f].

def soma_primos(i, f):
  s = 0
  for num in range(i, f + 1):
    if primo(num):
      s += num
  return s

Entradas relacionadas: