Jump to content
Fórum Script Brasil
  • 0

Projeto de apc em Python


Sarah Rayane

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.9k
×
×
  • Create New...