Dicas para alguns exercícios: você pode converter uma string em um inteiro e vice-versa (int(), e str()).
- Implemente uma função que retorne uma string de números pares no intervalo de 0 a n , separados por um ponto ‘.’. Por exemplo, str_numeros(10) retorna ‘0.2.4.6.8.10’. A definição de sua função deve ser:
def str_numeros(n):
def str_numeros(n):
Passo 1
O enunciado pede: implementar uma função que retorne uma string contendo os números pares no intervalo de
até
(inclusive), separados por um ponto
def str_numeros(n):
Exemplo dado: str_numeros( ) deve retornar
'.'. A assinatura exigida é:def str_numeros(n):
Exemplo dado: str_numeros(
'0.2.4.6.8.10'.Informações relevantes fornecidas:
- Queremos todos os números pares de
a (incluindo se ele for par). - O separador entre os números deve ser o caractere
'.'. - Dica: podemos converter entre strings e inteiros usando
str()eint().
Passo 2
Entendendo o que são números pares (a pequena teoria necessária, mastigada):
Um número inteiro é par se existe um inteiro
tal que
. Ou seja, os pares começam em
e seguem
. Na prática, para listar pares de
até
, a ideia é gerar a sequência
até um valor que não ultrapasse
.
Um número inteiro
Passo 3
Como gerar essa sequência em Python (conceito prático):
Em Python usamos a função
Para incluir (caso
seja par) devemos usar ao
devemos usar
Em Python usamos a função
range(start, stop, step) para gerar uma sequência aritmética. Ela produz valores começando em start, somando step repetidamente, até atingir um valor >= stop (ou seja, stop é exclusivo).Para incluir
stop = n + 1, pois range não inclui o limite superior. Então, para pares do
range(0, n+1, 2).Passo 4
Converter números para texto: por que precisamos disso?
A saída final tem de ser uma única string com pontos separando os números. Para juntar números com
A saída final tem de ser uma única string com pontos separando os números. Para juntar números com
'.' precisamos transformar cada número em sua representação textual usando str(). Exemplo: str(10) produz a string '10'.Passo 5
Juntar as strings com um separador: o método
Em Python,
joinEm Python,
'.'.join(lista_de_strings) pega cada elemento de lista_de_strings (que devem ser strings) e concatena tudo usando '.' como separador. Por isso montamos primeiro uma sequência de strings como ['0', '2', '4', ...] e depois fazemos '.'.join(...) para obter '0.2.4...'.Passo 6
Montando tudo junto com compreensão de lista ou gerador (passo a passo):
- Geramos os números pares com
range(0, n+1, 2). - Para cada
idessa sequência convertimos para string comstr(i). - Usamos
'.'.join(...)para juntar.
Em código isso fica natural e compacto:'.'.join(str(i) for i in range(0, n+1, 2)). Aqui eu usei uma expressão geradora dentro dejoin— funciona como lista, mas evita criar uma lista temporária completa (mais eficiente para muitos números).
Passo 7
Tratar casos de borda (coisa importante na prova):
- Se
for , o resultado deve ser '0'. A expressão acima já produz isso. - Se
for ímpar (por exemplo ), a sequência vai até o maior par menor que , ou seja — também correto. - Se, por segurança,
for negativo (não pedido explicitamente), faz sentido retornar uma string vazia ''porque não há pares no intervaloa . Podemos adicionar um pequeno teste if n < 0: return ''para cuidar deste caso sem complicar.
Passo 8
Exemplos rápidos para conferir mentalmente:
- str_numeros(
) → '0.2.4.6.8.10' - str_numeros(
) → '0.2.4.6.8' - str_numeros(
) → '0' - str_numeros(
) → '0'
Passo 9
Implementação final bem direta e adequada para a prova (fácil de lembrar e digitar):
Resposta
def str_numeros(n):
if n < 0:
return ‘’
return ‘.’.join(str(i) for i in range(0, n+1, 2))
if n < 0:
return ‘’
return ‘.’.join(str(i) for i in range(0, n+1, 2))