Ir para conteúdo
Fórum Script Brasil
  • 0

Projeto de apc em Python


Sarah Rayane

Pergunta

def artist(linha, name):
    for i in range(len(linha)):
        if linha[i] == '"':
            j = i + 1
            while j < len(linha) and linha[j] != '"':
                name += linha[j]
                j += 1
            new_linha = linha[j:]
            new_linha = new_linha.split()
            return name, new_linha


def turne_name(new_linha, turne):
    keys = ['turnê', 'show', 'espetáculo']
    k = 0
    for i in range(len(new_linha)):
        if new_linha[i] in keys:
            j = i + 1
            while j < len(new_linha) and '.' not in new_linha[j] and ',' not in new_linha[j] and ';' not in new_linha[j] and '?' not in new_linha[j] and '!' not in new_linha[j] and k < len(new_linha):
                turne += new_linha[j] + ' '
                k += 1
                j += 1
            if k < len(new_linha):
                turne += new_linha[j][:-1]
            return turne
        elif k >= len(new_linha):
            return turne
        k += 1


def state(new_linha, state_name):
    x = ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO']
    for i in range(len(new_linha)):
        if ',' or '.' in new_linha[i]:
            new_linha[i] = new_linha[i][:-1]
            return state_name
        else:
            # Add your logic here if needed
            pass


def price():
    n = int(input())
    for _ in range(n):
        name = ''
        turne = ''
        state_name = ''
        date_end = []
        cupom = ''

        linha = input()

        if name == '' and '"' in linha:
            name, new_linha = artist(linha, name)
            turne = turne_name(new_linha, turne)

        if state_name == '':
            new_linha = linha.split()
            state_name = state(new_linha, state_name)

        if date_end == []:
            date_end = new_linha

        if "cupom" in linha.lower():
            cupom = linha.split()[-1]

        print('######################################')
        if name != '':
            print("#{:^32}#".format(name.upper()))
            print('######################################')
        if turne:
            print("#{:^32}#".format(turne.upper()))
        if state_name != '':
            print("#{:^32}#".format(state_name))
        if date_end != []:
            for date_item in date_end:
                print("#{:^32}#".format(date_item))
        print('######################################')

        if "www" in linha.lower():
            print("#{:^32}#".format(linha.split()[-1]))

        print('######################################')

        ticket_price = input("")
        if cupom != '':
            print("|{: ^32}|".format(f"Ingressos: R$ {ticket_price}"))
            print("|{: ^32}|".format(f"  Utilize o cupom {cupom.upper()}"))
        else:
            print("|{: ^32}|".format(f"Ingressos: R$ {ticket_price}"))

        print("+------------------------------------+")


if __name__ == "__main__":
    price()

Preciso de ajuda para corrigir este código e ele retornar no formato certo.

Aqui está o enunciado:

Questão 1
Incompleto
Vale 10,00 ponto(s).
 Marcar questão
Texto da questão
Eu quero é rock!
As melhores bandas do planeta sairão em turnê, e você foi contratado para a divulgação! A partir de um e-mail do produtor, estruture as informações para criar os pôsteres. Cuidado, cada produtor tem um estilo de escrita...
#########################
#       RAIMUNDOS       #
#########################
#   Retorno da Jurema   #
#     JamPessoa-PB      #
#      Berssange's      #
#        26/fev         #
#        27/fev         #
#        28/fev         #
#########################
# palhas.do.coqueiro.br #
#########################
|  Ingressos: R$ 42.00  |
+-----------------------+
Cada pôster tem o mesmo formato, e note que as informações são centralizadas. Os dados são fornecidos em texto, da seguinte forma:
O nome do(s) artista(s) é sempre apresentado entre aspas duplas.
O nome da turnê é dada no mesmo período que o do(s) artista(s), após uma dessas palavras: "turnê", "espetáculo" ou "show", seguida imediatamente de algum símbolo de pontuação (.,;!?).
Cidade e Unidade de Federação são sempre apresentadas uma após a outra, separadas por vírgula (e talvez espaço). É garantido que toda UF é fornecida como sua sigla, em letras maiúsculas, e nenhuma cidade tem nome composto.
Datas são fornecidas no formato "dia/mês". Números sempre têm dois algarismos e, no caso de "mês" ser dado por extenso, é garantido que são usadas apenas as três primeiras letras do nome. Se houver mais de uma data, é garantido que todas seguem o mesmo formato.
O local de realização do show é sempre apresentado entre aspas duplas e após a informação do nome do(s) artista(s).
O endereço eletrônico para mais informações segue o formato padrão de uma URL na internet, 3 ou 4 grupos de (pelo menos 2) letras minúsculas separadas por ponto ('.').
O valor do ingresso é um número X
X
 dado como "R$ X" ou "X reais". Pode ou não haver casas decimais.
O código para o cupom de desconto, se houver, será a única informação com pelo menos três símbolos em caixa alta.
Entrada
A primeira linha fornece um valor inteiro com a quantidade n
n
 de linhas da mensagem . A seguir, são dadas n
n
 linhas contendo todas  as informações da turnê listadas acima, de forma não estruturada.
Saída
Para cada entrada, extraia as informações necessárias e monte o pôster no formato indicado acima (e conforme os exemplos). Note que o nome do artista deve estar em caixa alta; as datas devem ser listadas uma por linha, na ordem em que foram dadas; e que o preço do ingresso deve ser apresentado como valor real, com precisão de duas casas, precedido por "R$" e espaço.
Observações
A formatação da saída é importante, saiba usar f-string. Os detalhes estão na documentação aqui e aqui. Cuidado com a penalidade!
For example:
Input    Result
3
Os "Raimundos" chegaram à JamPessoa, PB, com a turnê Retorno da Jurema!
Preço único de 42 reais por tiquete, todos os detalhes estão no site palhas.do.coqueiro.br.
Apresentações em 26/fev, 27/fev e 28/fev no "Berssange's".
#########################
#       RAIMUNDOS       #
#########################
#   Retorno da Jurema   #
#     JamPessoa-PB      #
#      Berssange's      #
#        26/fev         #
#        27/fev         #
#        28/fev         #
#########################
# palhas.do.coqueiro.br #
#########################
|  Ingressos: R$ 42.00  |
+-----------------------+
4
A banda "Queen" volta aos palcos na turnê Mustapha Mustapha Mustapha Ibrahim.
Todas as informações estão no site www.queen.mus.
Serão apresentações em Brasília, DF, nos dias 31/10 e 01/11, no estádio "Mané Garrincha".
Ingressos a partir de R$ 500, mas você pode usar o cupom MAISAPC!
######################################
#               QUEEN                #
######################################
# Mustapha Mustapha Mustapha Ibrahim #
#            Brasília-DF             #
#           Mané Garrincha           #
#               31/10                #
#               01/11                #
######################################
#           www.queen.mus            #
######################################
|        Ingressos: R$ 500.00        |
|      Utilize o cupom MAISAPC       |
+------------------------------------+
3
Anunciamos "Alceu Valença" na turnê Tu Vens!
Shows em 27/06, 28/06, 04/07, 05/07 e 11/07, no "Bruma Leve" de Chapecó, SC.
Entrada por R$ 5000,50, mas tem desconto com NAODUVIDO com cadastro no site www.quarando.br.
#############################
#       ALCEU VALENÇA       #
#############################
#          Tu Vens          #
#        Chapecó-SC         #
#        Bruma Leve         #
#           27/06           #
#           28/06           #
#           04/07           #
#           05/07           #
#           11/07           #
#############################
#      www.quarando.br      #
#############################
|   Ingressos: R$ 5000.50   |
| Utilize o cupom NAODUVIDO |
+---------------------------+
6
Tem 100 reais sobrando?
Bora!.
Dia 11/11 tem "Autoramas" com o show Bom Veneno, no "Little Quail" de Ceilândia, DF.
Bora!
www.autoramasrock.com.br.
Bora!
############################
#        AUTORAMAS         #
############################
#        Bom Veneno        #
#       Ceilândia-DF       #
#       Little Quail       #
#          11/11           #
############################
# www.autoramasrock.com.br #
############################
|   Ingressos: R$ 100.00   |
+--------------------------+
2
"When in Rome" no "Colosseum" com a turnê The Promise, Londrina, PR em 13/jan.
R$ 123.45 no site right.words.to.say.
########################
#     WHEN IN ROME     #
########################
#     The Promise      #
#     Londrina-PR      #
#      Colosseum       #
#        13/jan        #
########################
#  right.words.to.say  #
########################
| Ingressos: R$ 123.45 |
+----------------------+
2
"rpm" com único show Alvorada Voraz, na "Esplanada dos Ministérios".
Brasília, DF, por 0 reais! Mais em www.rpm.mus.
#############################
#            RPM            #
#############################
#      Alvorada Voraz       #
#        Brasília-DF        #
# Esplanada dos Ministérios #
#############################
#        www.rpm.mus        #
#############################
|    Ingressos: R$ 0.00     |
+---------------------------+
4
Última oportunidade para ver "Grand Funk Railroad" na turnê I'm your Captain.
Grande apresentação no "El Grand Teatrón de la Frontera", em Chapecó, SC.
Detalhes em www.grandfunk.mus, ingressos por R$ 250.00.
Estudante paga meia.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

codigos com input são bem chatos de usar, o codigo tambem coloca um input seco, deveria editar os inputs colocando mensagens, tipo na linha 51 esta apenas

 linha = input()

poderia colocar

linha = input('Nome da banda ou artista')

não estou falando que vai corrigir, mas vai ajudar a quem esta de fora

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...