Escreva um programa em que o usuário deve entrar com uma sequência de 7 números inteiros, e imprima os valores maiores que 10, de modo invertido à entrada. Por exemplo, a sequência dada na entrada é: 1238254310 , e será mostrado na tela nesta ordem: 312512.
Passo 1
O enunciado pede que o usuário entre com uma sequência de
números inteiros e que o programa imprima os valores maiores que
, mas na ordem inversa da entrada. Ou seja:
- Entrada: uma sequência de exatamente
inteiros (podem vir em uma única linha separados por espaços ou em linhas diferentes). - Saída: todos os números da entrada que satisfazem a condição “maior que
”, exibidos no sentido inverso ao da leitura (o último elemento da entrada aparece primeiro na saída), concatenados sem separadores (como no exemplo dado).
Exemplo (interpretação do pedido): se a entrada fosse os números
1 2 3 8 25 4 3
os números maiores que seriam apenas
, e invertendo a ordem (a ordem invertida desses selecionados) continua sendo
. Se houvesse mais de um número maior que
, todos aparecem na ordem invertida da entrada.
1 2 3 8 25 4 3
os números maiores que
Passo 2
Estratégia simples e confiável (passo a passo do que o programa fará):
- Ler tokens da entrada até obter os
inteiros pedidos. - Converter esses tokens para inteiros e guardar numa lista na ordem lida.
- Filtrar essa lista, mantendo só os valores que são estritamente maiores que
. - Inverter a lista filtrada (para obter o sentido inverso da entrada).
- Imprimir os elementos dessa lista invertida concatenados, sem separador (cada número convertido para string e juntado).
Observação sobre o formato de saída: escolhi imprimir os números concatenados sem espaço porque o enunciado deu um exemplo no qual a saída aparece como uma sequência contínua de dígitos. Se preferir separados por espaço, é fácil mudar o código (mostro como nos comentários).
Passo 3
Como implementar cada etapa (conceitos e comandos básicos em Python, explicados):
- Ler entrada: usar a função built-in input() e dividir a linha em tokens com split(). Como o usuário pode digitar em várias linhas, podemos acumular tokens lendo linhas até termos
tokens. - Converter para inteiro: usar int(token) para cada token; isso lança erro se o token não for um inteiro válido — assumimos entrada correta conforme enunciado.
- Filtrar >
: percorrer a lista e selecionar somente os elementos com valor maior que — em Python isso é fácil com uma list comprehension, por exemplo . - Inverter lista: pode-se usar slice
ou a função . - Juntar e imprimir concatenado: transformar cada número em string com
e usar para concatenar sem separadores.
Passo 4
Exemplo rápido para fixar (sem código completo ainda):
- Lista de entrada (ordem lida):
. - Filtrando
: . - Invertendo:
. - Concatenando em string:
.
Perceba que cada número vira texto e a junção não insere espaços.
Passo 5
Algumas decisões de robustez:
- O programa vai ler linhas até coletar
tokens (número pedidos), então aceita entrada em uma linha ou em várias. - Se houver mais tokens na última linha, apenas os primeiros
são usados. - Se nenhum número for maior que
, o programa imprimirá uma linha vazia (apenas quebra de linha). Isso corresponde ao enunciado que não pede mensagem especial nesse caso. - Se você preferir outra formatação (por exemplo, números separados por espaço), substitua a linha de impressão por algo como
, onde é a lista de strings dos números invertidos.
Passo 6
Vou agora apresentar o programa completo em Python (versão explicada acima). Esse programa não imprime mensagens de prompt — é adequado para uso em avaliadores automáticos ou execução direta.
Passo 7
Explicação linha a linha do código que segue na seção de resposta:
- Inicializa uma lista de tokens vazia.
- Lê linhas e faz split até ter pelo menos
tokens. - Constrói a lista de
inteiros a partir dos tokens. - Filtra os que são maiores que
. - Inverte a lista filtrada.
- Converte cada valor para string e junta sem separador, imprimindo o resultado.
Resposta
import sys
tokens = []
while len(tokens) < 7:
try:
line = input()
except EOFError:
break
if not line:
continue
tokens += line.strip().split()
# Se não houver tokens suficientes, usamos o que foi lido (assume-se entrada correta conforme enunciado)
tokens = tokens[:7]
nums = list(map(int, tokens))
filtered = [x for x in nums if x > 10]
filtered.reverse() # inverte a ordem
# imprime concatenado sem separadores (ex.: 31025)
print(''.join(str(x) for x in filtered))