Ir ao conteúdo

Python Programa de Escala em Python


Ir à solução Resolvido por Visitante,

Posts recomendados

Postado

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] ")

 

Postado

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!

Postado

@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

Postado
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?

  • Solução
Postado

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

Postado
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?

Postado
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?

Postado
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!

 

  • 10 meses depois...
Postado
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ê.

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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...