1
resposta

[Projeto] Unindo estoques

import re


def obter_produtos(nome_estoque: str) -> tuple:
    """
    Solicita ao usuário uma lista de produtos separados por vírgula
    e retorna uma tupla com os nomes válidos (apenas letras).
    """     
    while True:
        produtos = input(f'Produtos do {nome_estoque}(separados por vírgula): ').strip()

        if not produtos:
            print('A lista não pode estar vazia. Tente novamente')
            continue
        #Divide por vírgula, espaço ou ambos (ex: "arroz,feijão", "arroz feijão")
        itens = re.split(r"[, ]+", produtos)

        #Verifica se todos os itens contêm apenas letras
        if all(item.isalpha() for item in itens):
            return tuple(itens)
        else:
            print('Digite apenas nomes de produtos (sem números ou símbolos).')


estoque_1 = obter_produtos('estoque 1')
estoque_2 = obter_produtos('estoque 2')

estoque = estoque_1 + estoque_2

print(estoque)
1 resposta

Oii, Matheus.

Obrigada por compartilhar seu código com a comunidade Alura.

Gostei da sua solução usando re.split para permitir entradas com vírgulas e espaços, isso torna a experiência mais flexível para quem digita os produtos. A verificação com isalpha também ajuda a garantir que os dados sejam limpos e consistentes.

Uma dica interessante para o futuro é exibir os produtos em ordem alfabética no final. Isso facilita a visualização. Assim:


import re

def obter_produtos(nome_estoque: str) -> tuple:
    """
    Solicita ao usuário uma lista de produtos separados por vírgula
    e retorna uma tupla com os nomes válidos (apenas letras).
    """     
    while True:
        produtos = input(f'Produtos do {nome_estoque} (separados por vírgula): ').strip()

        if not produtos:
            print('A lista não pode estar vazia. Tente novamente.')
            continue

        # Divide por vírgula, espaço ou ambos
        itens = re.split(r"[, ]+", produtos)

        # Verifica se todos os itens contêm apenas letras
        if all(item.isalpha() for item in itens):
            return tuple(itens)
        else:
            print('Digite apenas nomes de produtos (sem números ou símbolos).')

estoque_1 = obter_produtos('estoque 1')
estoque_2 = obter_produtos('estoque 2')

estoque = estoque_1 + estoque_2
estoque_ordenado = sorted(estoque)

print("\nRelatório final de produtos unificados (ordenado):")
print(estoque_ordenado)

Esse código usa sorted para ordenar os itens em ordem alfabética antes de exibir.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!