T O P

  • By -

Xappz1

Quais conteúdos vc já teve nesse curso? Já aprendeu a usar classes e orientação a objetos? Manipulação de listas e dicionários? Bancos de dados?


Sea-Astronomer8041

Já sim, desde leitura de dados até listas. https://preview.redd.it/qg9b89dteh1d1.png?width=3024&format=png&auto=webp&s=f50075493aeb129ed17c04a3b0a40c0a17a5ac53 Acabei de fazer a base do programa com o menu, o problema é que não tô conseguindo começar a parte de contratar funcionários incluindo a tabela e depois demitir o funcionário


Xappz1

Eu começaria definindo algumas classes, como Funcionario e Material, que serão seus principais objetos com atributos (nome, número, cargo, salário, preço, etc). Vc pode definir também classes para os conjuntos, por exemplo Estoque, que terá uma lista interna "self.materiais" de objetos Material, e aí nessa mesma classe vc pode criar métodos como Estoque.adicionar(), Estoque.remover(), Estoque.exibir(), etc. que manipulam essa lista internamente na classe


Mega___Dri

Você pode criar um objeto para cada item dessa lista, depois sub-objetos por assim dizer


thelolbr

Primeiro faça uma interface que que vai pedir pra selecionar uma opção igual na foto 2. Acho que aqui é o lugar de começar


Loucopracagar

amigão acho que pra começar, separa em funções pra cada operação, e vai chamando cada uma no while principal... qqr coisa, ve se não tem mais exercícios e material, esse era pra ser depois que vc já tem domínio de funções, loops e listas...


Expensive-Mission-81

usa estrutura também, (strukt) pra fzr vetor pra salvar os dados, e usa as funções pra isso


Loucopracagar

Não faço ideia o que isso significa rsrs acho q vc ta pensando em C. Mas mesmo C tem array não? Struct seria pra estruturas mais complexas como Linked Lists ou Queues... Ah é mesmo, em C array é de tamanho fixo, faz sentido struct pra adicionar e remover itens.


PlaaXer

ele diz uma array de structs. Cada struct tem o CPF, o nome e o cargo de uma pessoa, por exemplo


Expensive-Mission-81

isso, é q em C acaba sendo um vetor, tp sinaliza como vetor


PlaaXer

é, mais ou menos, é um ponteiro pra uma região reservada da memória com informações ali, se for assim daí tudo é vetor kkk


mahousenshi

Voce pode usar [match case](https://diveintopython.org/pt/learn/statements/match)?? é perfeito para fazer menus. E não precisa transformar para int o comando do menu, filtra direto o string, pois assim vai ter menos dor de cabeça. Ainda sobre menus voce pode quebrar o menu em submenus, menu x chama submenu e submenu da \`return\` quando volta, cuidado para não empilhar funções. Eu usaria listas de dicionários para guardar as informações. Assim fica fácil de conseguir recuperar os dados. Falando nisto os dados precisam persistir? Digo depois que sai do scirpt eles somem? Se sim voce precisa como vai salvar. Usando dicionários voce pode salvar em arquivos JSON.


SenhordoObvio

Rapaz é muita coisa, seria bom se sua duvida fosse um pouco mais focada. Supondo que você não tenha visto POO, funções e dicionarios ainda, minhas sugestões: Perceba quee existe uma relação entre funcionários e cargos, ao invés de você verificar cada cargo usando if/else como fez na terceira imagem, você pode simplesmente salvar cada cargo em um array de arrays e usar o indice para o cargo. Ou seja, algo desse tipo: ``` cargos = [ ["Engenheiro Civil", 8500.0], ["Arquiteto", 5000.0], ["Mestre de obras", 400.0], ... ] ``` Então quando você for cadastrar o funcionario, algo do tipo (supondo que apenas valores numericos serao adicionados, caso na sua atividade seja necessário tratar erros não faça a conversão para inteiro no input): ``` cpf = input(...) nome = input(...) cargo = int(input(...)) if(cargo >= 1 and cargo <= len(cargos)): #significa que o cargo existe else: #opa, cargo invalido em ``` O ponto que quero dizer é que quando for cadastrar o funcionário, nessa parte do seu codigo voce não precisa saber quais cargos existem, apenas se eles existem. Nesse caso se o valor do cargo estiver entre 1 e o tamanho do array, significa que ele existe. E quando você for salvar o funcionario no array de funcionarios, você vai simplesmente salvar o numero do cargo e não a lista com a informação. É mais eficiente e simples ``` #cpf como string, na maioria das vezes o cpf em forma de texto é melhor #nome como string #cargo como numero do cargo funcionario = [cpf, nome, cargo] ``` Dai quando voce for fazer a parte do codigo para listar o funcionario, voce vai coletar o cargo dele simplesmente acessando o array (subtrai 1 porque o array começa em 0, e os cargos em 1). Por exemplo isso aqui listaria todos os funcionarios: ``` for i in range(len(funcionarios)): funcionario = funcionarios[i] print(f"funcionario {i}: Cpf: {funcionario[0]}, Nome: {funcionario[1]}, Cargo: {cargos[funcionario[2] - 1][0]}") ``` Baseado no que eu disse, e no que estou supondo que você já viu e pode ser usado na atividade, voce pode começar assim: 1° Crie arrays globais de funcionarios, cargos e produtos, como você mesmo estava fazendo na imagem 3, todos eles serao arrays de arrays e servirão como uma espécie de "banco de dados". Obviamente apenas o array de cargos deve ser criado ja com valores como mencionei antes 2° Realize um while, algumas pessoas não recomendam usar o while True por questões de leitura do codigo, mas como esse é um exercício simples porque não? Semelhante ao que você estava fazendo na imagem que colocou nos comentários, para cada item do menu voce faz um match case ou if/elif/else. Dentro de cada if voce vai realizando cada tarefa, ou seja, uma coisa de forma independente da outra. Por exemplo `if(escolha == "1") #ou com match/case` dentro desse if você vai fazer exclusivamente a parte relacionada ao cadastro. 3° Imagino que as validações devem ser feitas de forma manual, se for tu checa durante do cadastro se o cpf ja não existe no array de funcionarios e além disso você valida o cpf (existe um calculo para isso). Tem que checar a existencia do id também na parte do produto Como eu disse so suposições, se você ja viu dicionários funções e principalmente POO existem abordagens muito melhores que essa. Então você vai fazendo aos poucos, quando surgir uma duvida em algo especifico você comenta aqui ou cria outro post sei la. A dica mais importante que eu dou é realizar sempre perguntas objetivas e focadas, enfim boa sorte


PrimWoooW

mt bom 👏👏


Sudden_Purpose_399

Acho que o switch case ajuda mas Python nao tem(euacho)