Ir ao conteúdo
  • Cadastre-se
Visitante

Python RESOLVIDO Programa de Escala em Python

Posts recomendados

Visitante

Olá, eu estou aprendendo Python e eu sou o responsável por criar as escalas de coroinhas aqui da minha cidade, e eu queria colocar a data e o horário da missa tudo organizado após o término da execução desta forma:

 

01/03 19:30: Nome2 Nome3 Nome 6
03/03 10:00: Nome1 Nome 10 Nome 7
03/03 19:30: Nome 8 Nome4 Nome5

 

Só que da forma que está acontece isto:

 

------------------------------
      GERADOR DE ESCALAS      
------------------------------
Quantas missas terá nessa escala? 2
Com numeração = S / Sem numeração = N / Data = D ? D
Dia da missa e horário: Exemplo (30.06/19:30) 30.06/19:30
30.06/19:30 Nome4 Nome2 Nome5
Dia da missa e horário: Exemplo (30.06/19:30) 30.03/10:00
30.03/10:00 Nome1 Nome7 Nome5
Quer gerar outra escala? [S/N]

 

Eu n quero que fique perguntando a data toda hora, eu quero que as datas sejam perguntadas antes! e Depois ele automaticamente arruma tudo (Demonstrado na primeira forma)

 

Só que eu não estou encontrando um jeito, se alguém conseguir me ajudar eu agradeç!

 

 

import random
a = 'S'
while a in 'Ss':

    print("------------------------------")
    print("      GERADOR DE ESCALAS      ")
    print("------------------------------")

    C2 = 'Nome1'
    C3 = 'Nome2'
    C4 = 'Nome3'
    C5 = 'Nome4'
    C6 = 'Nome5'
    C7 = 'Nome6'
    C8 = 'Nome7'
    C9 = 'Nome8'
    C10 = 'Nome9'
    C11 = 'Nome10'
    n = 1
    v = int(input("Quantas missas terá nessa escala? "))
    N = 1
    Validador = "R"
    Troca = input("Com numeração = S / Sem numeração = N / Data = D ? ")
    for c in range(0,v):
        while Validador == "R":
            E1 = random.choice([C2, C3, C4, C5, C6, C7, C8, C9, C10, C11])
            E2 = random.choice([C2, C3, C4, C5, C6, C7, C8, C9, C10, C11])
            E3 = random.choice([C2, C3, C4, C5, C6, C7, C8, C9, C10, C11])
            if E1 == E2 or E2 == E3 or E3 == E1:
                Validador == "R"
            else:
                break
        Data = input("Dia da missa e horário: Exemplo (30.06/19:30) ")
        if Troca == 'S':
            print(N,"º Dia: ", E1, E2, E3)
            N = N + 1
        elif Troca == 'D':
            print(Data, E1, E2, E3)
        else:
            print(E1, E2, E3)

    a = input("Quer gerar outra escala? [S/N] ")

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!

Não sei se entendi bem sua organização de dados, mas eu fiz abaixo um script que:

-Pergunta a data do dia da missa

-Pergunta Quantas missas serão realizadas neste dia

-Pergunta quantos coroinhas são necessários para ajudar em cada uma das missas

Feito isso, basta preencher os nomes dos coroinhas e preencher os horários das missas do dia, depois disso de forma aleatória o programa decide que coroinha vai ajudar em cada horário neste dia, dividindo pela quantidade necessária de ajudantes em cada missa.

 

Se é isso que você quer eu não sei, mas veja se te ajuda em algo:

import random
while True:
    print("+---------------------------------------+")
    print("|     \033[0;30mGERADOR DE ESCALAS DE MISSAS\033[0;0m      |")
    print("+---------------------------------------+")

    dataMissa = input("Informe a data da missa: ")
    qtdeMissas = int(input("Quantas missas serão realizadas? : "))
    qtdeCoroinhas = int(input("Quantos Coroinhas são necessários em cada missa? : "))

    arranjo = (qtdeCoroinhas * qtdeMissas)

    print(f"\nPara o dia \033[1;93m{dataMissa}\033[0;0m, serão relizados \033[1;93m{qtdeMissas}\033[0;0m missas e serão necessários um total de \033[1;93m%.0f\033[0;0m coroinhas para as celebrações!\n" %arranjo)

    print(f"\n|--------Escala das \033[1;93m{qtdeMissas}\033[0;0m missas--------|\n")

    listarCoroinhas = []
    for i in range(arranjo):
        lista = input(f"Digite o nome do coroinha \033[1;30;107m{i+1}\033[0;0;0m de \033[1;30;107m{arranjo}\033[0;0;0m escalado: ")
        listarCoroinhas.append(lista)
    random.shuffle(listarCoroinhas)
    print("\n|--------------------------------------------------|\n")

    listarHorarios = []
    for i in range(qtdeMissas):
        horario = input(f"Digite o horário da missa \033[1;93;107m{i+1}\033[0;0;0m de \033[1;93;107m{qtdeMissas}\033[0;0;0m: ")
        listarHorarios.append(horario)
    print("\n|--------------------------------------------------|\n")


    for i in range(qtdeMissas):
        print(f"\033[0;33mEscala da missa dia \033[0;30m{dataMissa} \033[0;33màs: \033[1;93;44m"+listarHorarios[i]+"\033[0;0;0m")
        lista = listarCoroinhas

        for c in range(qtdeCoroinhas):
            print(f"  - Coroinha: \033[1;93m{lista[c]}\033[0;0m\n")

        del (lista[:2])

Não fiz o tratamento de validação para a entrada de dados, portanto ao preencher, cuidado com as informações

Eu fiz o preenchimento seguindo esta forma:

Data da missa: 03/03/2019 (usei data neste formato)

Qtde Missas: 3 (vamos dizer que tem 3 neste dia)

Qtde Coroinhas: 2 (vamos dizer que para cada missa seja necessário pelo menos 2 coroinhas para ajudar nas celebrações)

Nomes: Fábio ou Fábio Pedro (Aqui tanto faz o preenchimento de nomes)

Horário: 07:00 (usei hora neste formato)

 

Espero que seja isso o resultado final que espera!

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  •    18
    Visitante

    @fspjonny Não, n é bem assim, primeiro eu quero que ele pergunte:

     

    Quantas missa terão no mês?

    Data de cada missa?

     

    Logo após ele já dá uma escala dos coroinhas (que são 3 por missa) de forma aleatória, já mostrando o dia de cada coroinha tipo assim:

     

    (No caso os nomes dos coroinhas já estão no código do programa)

    Escala.png.2692791fd81f5f5bf7f9edd4e93d81d5.png

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    2 horas atrás, Kauan Maia da Silva disse:

    @fspjonny Não, n é bem assim, primeiro eu quero que ele pergunte:

     

    Quantas missa terão no mês?

    Data de cada missa?

     

    Logo após ele já dá uma escala dos coroinhas (que são 3 por missa) de forma aleatória, já mostrando o dia de cada coroinha tipo assim:

     

    (No caso os nomes dos coroinhas já estão no código do programa)

    Escala.png.2692791fd81f5f5bf7f9edd4e93d81d5.png

    Estas informações serão sempre constantes?

    O horário de celebração é constante? Ou seja sempre será 10:00, sempre as 19:30, etc...

    Os coroinhas serão sempre 3, nem mais nem menos?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Esquece o que perguntei acima, mudei a tática, não é preciso se preocupar com todas as constantes desde que a pessoa cadastre data e hora de cada missa, restando como única constante a quantidade de 3 coroinhas em cada missa e a forma aleatória de escala.

    Veja se este código é o que precisa:

    import random
    import shutil
    
    def limpa_tela():
        print("\n" * shutil.get_terminal_size().lines)
    
    while True:
        print("+---------------------------------------+")
        print("|    GERADOR DE ESCALAS DE MISSAS       |")
        print("+---------------------------------------+")
    
        qtdeMissas = int(input("Quantas missas serão realizadas no mês? : "))
    
        diaHoraMissa = []
        for i in range(qtdeMissas):
            dataHoraMissa = input("Informe a Data e a Hora da {}º missa: ".format(i+1))
            diaHoraMissa.append(dataHoraMissa)
    
        listaCoroinhas = ["Rebeca","Levi","Yasmin","Ivan","Luana","Eric","Leticia","Ilana","Elym","Kauan"]
        random.shuffle(listaCoroinhas)
    
        for i in range(qtdeMissas):
            lista = listaCoroinhas
            random.shuffle(lista)
    
            print(f"\nEscala da missa dia {diaHoraMissa[i]}")
            for c in range(1):
                print(f"Coroinha : {random.sample(lista,3)}")
    
        continua = input("\n\nContinuar a gerar escalas? (S/N): ")
        if continua == "S" or continua =="s":
            limpa_tela()
        else:
            limpa_tela()
            exit()

    O resultado seria esse na tela

    image.thumb.png.89b4ade0e1cfad91902b516c8939e49f.png

    adicionado 15 minutos depois

    Já estava esquecendo tem ai um ajuste na estética desse código que não coloquei, porque estava testando listas, mas que é conveter isso em string, removendo os colchetes e aspas simples.

            print(f"\nEscala da missa dia {diaHoraMissa[i]}")
            for c in range(1):
                resultado = ", ".join(random.sample(lista,3)) # <--- Este trecho aqui, mude no seu código.
                print (f"Coroinha : {resultado}")

    O resultado disso é:

    image.png.b154810436ae263a0428fd11e4457adc.png

    • Obrigado 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  •    18
    Visitante

    @fspjonny mano obrigado, me ajudou muito!

     

    adicionado 0 minutos depois

    Estava muito tempo tentando fazer assim

     

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Excelente então que eu pude lhe ajudar!👍

    • Obrigado 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  •    18
    Visitante
    23 horas atrás, fspjonny disse:

    qtdeMissas = int(input("Quantas missas serão realizadas no mês? : ")) diaHoraMissa = [] for i in range(qtdeMissas😞 dataHoraMissa = input("Informe a Data e a Hora da {}º missa: ".format(i+1)) diaHoraMissa.append(dataHoraMissa)

    Isso que você fez era o que eu estava tentando fazer! Como você colocou a data e hora em uma variável! Por que tipo quando você faz isso do jeito normal, toda vez q pedir para colocar a data ele ia sobrepor a resposta anterior! Isso é variável complexa?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    1 hora atrás, Kauan Maia da Silva disse:

    Isso que você fez era o que eu estava tentando fazer! Como você colocou a data e hora em uma variável! Por que tipo quando você faz isso do jeito normal, toda vez q pedir para colocar a data ele ia sobrepor a resposta anterior! Isso é variável complexa?

    Desculpe, não entendi  sua pergunta sobre variável complexa?

     

    Deixa eu comentar sobre essas linhas:

     

    Citação

    qtdeMissas = int(input("Quantas missas serão realizadas no mês? : "))

    A variável qtdeMissas, voce já sabe que receberá um inteiro

    Citação

    diaHoraMissa = []

    Crio um objeto do tipo lista e o deixo vazio

    Citação

    for i in range(qtdeMissas):

    Crio um laço que se repetirá de acordo com a quantidade de missas que foram informados para o mês, então tudo que estiver dentro deste laço se repetirá número de vezes que foi digitado em qtdeMissas

    Citação

     

    dataHoraMissa = input("Informe a Data e a Hora da {}º missa: ".format(i+1))

    diaHoraMissa.append(dataHoraMissa)

     

    dataHoraMissa receberá em formato texto a informação digitada no formato que eu escolhi 03/03/2019 - 17:00 e o .format(i+1), é uma função built-in do python do tipo string que funciona como "um tipo de variável" para este caso de formatação de string, pois ela vai pegar o indice do laço que começa em zero e incrementar em +1 e devolver como uma string para ser exibida na posição das chaves {} pelo valor desse incremento o que vai gerar a cada volta 0+1=1, 1+1=2, 2+1=3, etc... e assim exibir o texto 1º missa, 2º missa, 3º missa, etc...

     

    E a variável diaHoraMissa.append, receberá a cada iteração do laço o valor digitado em dataHoraMissa e esta informação entrará no final da pilha, conforme vai sendo digitada cada nova informação.

     

    Por fim, o que fiz foi misturar 1 vez as listas de nomes a cada iteração do laço em: random.shuffle(listaCoroinhas) random.shuffle(lista), fiz assim para garantir a aleatoriedade da lista.

     

    Era esta a dúvida?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  •    18
    Visitante

    Sim, eu só queria saber mesmo como você colocou todas as datas e horas dentro de uma variável-'

     

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    40 minutos atrás, Kauan Maia da Silva disse:

    Sim, eu só queria saber mesmo como você colocou todas as datas e horas dentro de uma variável-'

     

    Sim, poderia ser feito também apenas com uma variável e todas as informações dentro dela, porém não é o correto de ser feito, veja como seria da forma como você estava implementando.

    listarDatas = ""
    
    print("\nA variável listarDatas já foi inicializada vazia,\nesperando receber valores, veja o tipo dela: ",type(listarDatas),"\n\n")
    
    # Peço aqui apenas 3 data no formato dd/mm/yyyy
    for i in range(3):
        data = input("Digite uma data: ")
        listarDatas = listarDatas +" "+ data
    
    print("\n\nResultado da iteração é uma variável que recebeu 3 vezes datas distintas ")
    print(listarDatas)
    
    print (60*"-") #---- divisor de tela -----
    
    print("\nPosso agora fatiar essa string em uma lista iterável, veja:")
    
    fatiarListar = listarDatas.split()
    print(fatiarListar)
    
    print("\nVeja o que o type diz do objeto que gerei acima :",type(fatiarListar))
    
    print (60*"-") #---- divisor de tela -----
    
    print("\nAgora posso iterar individualmente cada índice dessa lista ou ela toda, como no caso abaixo\n")
    
    for i in range(3):
        print(fatiarListar[i])

    O Resultado em tela seria este abaixo

    image.png.77f0779d2aa2e2a2e527ec0fac8a615d.png

     

    Analise o código para o que foi feito!

     

    • Obrigado 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  •    18
    Visitante

    @fspjonny Valeu, agora me ajudou muito, muito dos meus programas eram limitados por conta disto que eu não sabia, sou novo e sou aluno do Curso em vídeo, estou no mundo 2 do curso de python!

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    2 horas atrás, Gustavobessa disse:

    Teria como disponibilizar o programa de escala. 

    O código fonte está aí acima é só utilizar ele, mas avise aqui se caso ele não esteja visível para você.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Criar uma conta

    Crie uma nova conta em nossa comunidade. É fácil!

    Crie uma nova conta

    Entrar

    Já tem uma conta? Faça o login.

    Entrar agora





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×
    ×
    • Criar novo...

    Aprenda_a_Ler_Resistores_e_Capacitores-capa-3d-newsletter.jpg

    EBOOK GRÁTIS!

    CLIQUE AQUI E BAIXE AGORA MESMO!