Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Simplesmente tentei juntar tudo mas no final virou bagunça e nada da certo

não consigo fazer com que todos os numeros colocados na lista numeros totais tenham sua tabuada impressa

import os

Listas para armazenar dados

nomes = [] numeros_impares = [] numeros_totais = []

def cadastrar_usuario(): """Cadastra 4 usuários e adiciona seus nomes à lista nomes.""" for c in range(1, 5): usuario = str(input(f'Escreva o nome do usuário {c}: ')) nomes.append(usuario)

def tabuada(numero): """Imprime a tabuada do número fornecido.""" print(f"\nTabuada do número {numero}:") for i in range(1, 11): resultado = numero * i print(f"{numero} x {i} = {resultado}")

def adicionar_numero(): """Adiciona números à lista numeros_impares e numeros_totais e exibe a tabuada ao final.""" while True: try: numero = int(input('Escreva um número de 1 a 10: ')) if numero < 1 or numero > 10: print("Número inválido. Digite um número entre 1 e 10.") continue numeros_totais.append(numero)

        if numero % 2 != 0:  # Verifica se o número é ímpar
            numeros_impares.append(numero)

        # Pergunta se deseja continuar ou sair
        confirmacao = input('Deseja adicionar mais números? Digite "1" para continuar adicionando ou qualquer outra tecla para sair: ')
        
        if confirmacao != '1':
            break  # Sai do loop se qualquer outra tecla for pressionada

    except ValueError:
        print("Por favor, insira um número válido.")

# Após terminar de adicionar os números, exibe a tabuada de todos
for numero in numeros_totais:
    tabuada(numero)

def imprimir_numeros_decimais_ordem_decrescente(): """Imprime os números de 10 a 1 em ordem decrescente.""" print("\nNúmeros de 10 a 1 em ordem decrescente:") for numero in range(10, 0, -1): print(numero)

Chamando as funções

cadastrar_usuario() adicionar_numero() imprimir_numeros_decimais_ordem_decrescente()

Exibindo os resultados

print("\nNomes cadastrados:", nomes) print("Números ímpares adicionados:", numeros_impares) print("Soma dos números ímpares:", sum(numeros_impares)) print("A Soma de todos os números:", sum(numeros_totais))

2 respostas
solução!

Oi Jean,

Percebi que você está com dificuldades para organizar a lógica do seu código, mas não se preocupe, é comum no começo 😊.

Vamos analisar o que está acontecendo e como podemos melhorar.

O problema principal é que você está chamando a função tabuada() dentro do loop adicionar_numero(), mas também fora dele. Isso faz com que a tabuada seja impressa várias vezes, e não apenas no final, como você deseja.

Para corrigir isso, você deve remover a chamada da função tabuada() de dentro do loop adicionar_numero().

Assim, a tabuada será impressa apenas uma vez, no final, após todos os números serem adicionados.

Além disso, sugiro que você mova a parte que imprime a tabuada para dentro da função adicionar_numero(), logo após o loop while.

Isso garante que a tabuada seja impressa imediatamente após a adição dos números, e não depois de todas as outras funções serem executadas.

Veja como o código ficaria:

import os

# Listas para armazenar dados
nomes = []
numeros_impares = []
numeros_totais = []

def cadastrar_usuario():
    """Cadastra 4 usuários e adiciona seus nomes à lista nomes."""
    for c in range(1, 5):
        usuario = str(input(f'Escreva o nome do usuário {c}: '))
        nomes.append(usuario)

def tabuada(numero):
    """Imprime a tabuada do número fornecido."""
    print(f"\nTabuada do número {numero}:")
    for i in range(1, 11):
        resultado = numero * i
        print(f"{numero} x {i} = {resultado}")

def adicionar_numero():
    """Adiciona números à lista numeros_impares e numeros_totais e exibe a tabuada ao final."""
    while True:
        try:
            numero = int(input('Escreva um número de 1 a 10: '))
            if numero < 1 or numero > 10:
                print("Número inválido. Digite um número entre 1 e 10.")
                continue
            numeros_totais.append(numero)

            if numero % 2 != 0:  # Verifica se o número é ímpar
                numeros_impares.append(numero)

            # Pergunta se deseja continuar ou sair
            confirmacao = input('Deseja adicionar mais números? Digite "1" para continuar adicionando ou qualquer outra tecla para sair: ')
            
            if confirmacao != '1':
                break  # Sai do loop se qualquer outra tecla for pressionada

        except ValueError:
            print("Por favor, insira um número válido.")
    
    # Após terminar de adicionar os números, exibe a tabuada de todos
    for numero in numeros_totais:
        tabuada(numero)

def imprimir_numeros_decimais_ordem_decrescente():
    """Imprime os números de 10 a 1 em ordem decrescente."""
    print("\nNúmeros de 10 a 1 em ordem decrescente:")
    for numero in range(10, 0, -1):
        print(numero)

# Chamando as funções
cadastrar_usuario()
adicionar_numero()
imprimir_numeros_decimais_ordem_decrescente()

# Exibindo os resultados
print("\nNomes cadastrados:", nomes)
print("Números ímpares adicionados:", numeros_impares)
print("Soma dos números ímpares:", sum(numeros_impares))
print("A Soma de todos os números:", sum(numeros_totais))

Com essa mudança, a tabuada será impressa corretamente, apenas uma vez, após a adição de todos os números. 👍

🤓 Para saber mais:

Continue praticando e explorando o mundo da programação! 🤔

Obrigado @Luis Dias