Informática, perguntado por guiltymonster, 7 meses atrás

Escreva um programa que leia números inteiros no intervalo [0,50] e os armazene em um vetor com 10 posições. Preencha um segundo vetor apenas com os números ímpares do primeiro vetor. Imprima os dois vetores, 2 elementos por linha. programa em Python

Soluções para a tarefa

Respondido por GeBEfte
2

O programa abaixo (também anexado) conta com uma validação simples dos dados enviados pelo usuário para que seja garantido o envio de números no intervalo solicitado pelo usuário.

Para mostrar os vetores no formato especificado no texto, utilizamos uma função, já que essa rotina é utilizada duas vezes, uma para o vetor original e outra para o vetor de números impares formado a partir do primeiro vetor.

Obs.: Os pontos que precedem algumas linhas de programação não fazem parte do programa, foram colocados apenas para garantir a indentação do código aqui no site.

[Python 3.8]

def mostra_vetor(lst):

.....cont = 0

.....while True:

..........try:

...............print(lst[cont], end=' ')

...............cont += 1

...............if cont%2 == 0:

....................print()

..........except:

...............break

lst_int = list()

lst_impares = list()

print('Envie 10 números inteiros no intervalo fechado [0,50]')

for i in range(10):

.....while True:

..........try:

...............num = int(input(f'Digite o {i+1}° número: '))

...............if 0 <= num <= 50:

....................lst_int.append(num)

....................break

...............else:

....................print('Entrada inválida! O número deve estar no intervalo [0,50]')

....................continue

..........except:

...............print('Entrada inválida! Digite um número inteiro no intervalo [0,50]')

for numero in lst_int:

.....if numero%2 != 0:

..........lst_impares.append(numero)

print('\nPrimeiro vetor:')

mostra_vetor(lst_int)

print('\nSegundo vetor vetor:')

mostra_vetor(lst_impares)

\Huge{\begin{array}{c}\Delta \tt{\!\!\!\!\!\!\,\,o}\!\!\!\!\!\!\!\!\:\,\perp\end{array}}Qualquer~d\acute{u}vida,~deixe~ um~coment\acute{a}rio

Anexos:

guiltymonster: muito obrigado, minha maior duvida era como fazer os números serem exibidos de 2 em dois
GeBEfte: Tranquilo, há diversas formas de se fazer isso, a apresentada é apenas uma delas.
guiltymonster: Deu super certo, muito obrigado. Se tiver como me detalhar a parte que exibe os elementos dos vetores de dois em dois, ainda não compreendi como fazer isso. Muito obrigado desde já, e feliz natal!
GeBEfte: Certo. A função criada "mostra_vetor()" recebe como parâmetro uma lista.
Começamos a função inicializando um contador "cont" com valor 0 e um laço while "infinito".
Dentro deste laço, "tentamos" (try) imprimir o elemento de índice "cont" e permanecemos na mesma linha com um espaço simples (end=' ').
GeBEfte: Após imprimir o elemento, incrementamos o contador e verificamos se o contador é par (if cont%2==0), caso positivo, trocamos de linha com um "print". Em outras palavras, caso tenhamos imprimido já dois termos na mesma linha (cont é par), podemos passar para próxima.
GeBEfte: Por outro lado, caso não possamos imprimir o elemento da lista, ou seja, "tentamos" imprimir, mas não foi possível (elemento não existe), caímos na exceção (except). Neste ponto, podemos sair do loop while "infinito" com o comando break.
GeBEfte: ex.: lst = [1, 2, 3], cont = 0
Tentamos imprimir o primeiro elemento lst[0].
O elemento é imprimido junto a um espaço simples ("1 ")
cont = 1
cont é impar, então passamos para próxima iteração do laço.
Tentamos imprimir o segundo elemento lst[1]
O elemento é imprimido junto a um espaço simples ("2 ")
cont = 2
cont é par, trocamos a linha.
GeBEfte: Tentamos imprimir o terceiro elemento lst[2].
O elemento é imprimido junto a um espaço simples ("3 ")
cont = 3
cont é impar, então passamos para próxima iteração do laço.
Tentamos imprimir o primeiro elemento lst[3].
Este elemento não existe (acabou o vetor), saímos do loop.

Caso fique alguma dúvida, por favor, deixe msg e, assim que possível, respondo.
guiltymonster: Muito obrigado, agora entendi a função.
Perguntas interessantes