Jump to content
Coghi000

Exercício Dificl

Recommended Posts

Boa tarde, preciso de ajuda para terminar este exercicio, o que acontece nele, é que quando ele roda a função ministra da classe Professor, ele ve se a soma da carga horário é maior que 200, o correto era ele não adicionar mais la lista disciplinas assim que passa-se de 200, mas ao invés disso e ele está adicionando mesmo passando da carga horaria, não  estou conseguindo resolver =/, alguem pode dar uma força.

 

class Disciplina():
    '''
    Abstração de uma disciplinai, possui os atributos Nome e carga Horária
    '''
    def __init__(self, nome: str, carga_horaria: int) -> None:
        self._nome = nome
        self._carga_horaria = carga_horaria

    def get_nome(self) -> str:
        '''
        Acessor do atributo nome
        '''
        return self._nome

    def get_carga_horaria(self) -> int:
        '''
        Acessor do atributo cargar horaria
        '''
        return self._carga_horaria


class Pessoa():
    '''
    Abstração de uma pessoa no Modelo, classe base para Aluno e Professor
    que contém dados pertencentes a ambos.
    '''
    def __init__(self, nome: str, telefone: int, email: float) -> None:
        self._nome = nome
        self._telefone = telefone
        self._email = email

    def get_nome(self) -> str:
        '''
        Acessor do atributo Nome
        '''
        return self._nome

    def get_telefone(self) -> int:
        '''
        Acessor do atributo telefone
        '''
        return self._telefone

    def set_telefone(self, novo_telefone: int) -> None:
        '''
        Mutador do atributo telefone deve checar se é um número inteiro e,
        caso contrário devolver um TypeError
        '''
        if type(novo_telefone) not in [int]:
            raise TypeError('Numero invalido')
        self._telefone = novo_telefone

    def get_email(self) -> str:
        '''
        Acessor do atributo email
        '''
        return self._email

    def set_email(self, novo_email) -> None:
        '''
        Mutador do atributo eail, deve checar se éum email válido
        (se possuir o caractere '@') e caso contrário devolver
        um ValueError
        '''
        if novo_email.count('@') == 0 or novo_email.count('@') > 1:
            raise ValueError('E-mail invalido')
        self._email = novo_email


class Aluno(Pessoa):

    def __init__(self, nome: str, telefone: int,
                 email: str, n_matricula: int) -> None:
        super().__init__(nome, telefone, email)
        self._n_matricula = n_matricula
        self._disciplinas = []

    def get_matricula(self) -> int:
        '''
        Acessor do atributo matricula
        '''
        return self._n_matricula

    def matricular(self, disciplina: Disciplina) -> None:
        '''
        Realiza matrícula do Aluno na disciplina
        '''
        self._disciplinas.append(disciplina)
        return None

    def lista_disciplinas(self) -> list:
        '''
        Devolve a lista de disciplinas em que o aluno esta matriculado
        '''
        return self._disciplinas


class Professor(Pessoa):
    '''
    Entidade professor do Modelo
    '''
    def __init__(self, nome, telefone, email):
        self._nome = nome
        self._telefone = telefone
        self._email = email
        self._disciplinas = []

    def ministra(self, disciplina: Disciplina) -> None:
        '''
        Atribui o professor como ministrante da disiciplina
        Um professor não pode dar mais de 200 horas de aula,
        Caso um professor tente atribuir mais de 200h devolve
        ValueError
        '''
        horas = []
        horas.append(disciplina._carga_horaria)
        soma = 0
        for item in horas:
            print(item)
            soma = item + item
            if soma > 200:
                return ValueError
            else:
                self._disciplinas.append(disciplina)
                return None

    def lista_disciplinas(self) -> list:
        '''
        lista as disciplinas ministradas pelo professor
        '''
        pass

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Claudia França
      https://gestaotecc.com.br/ebook/nomedoarvio.pdf      ==== === =======> esse é o link do e-book 
       
      {"email":"Subscriber Already Exists","convertkit":"Inactive","drip":"Inactive","activeCampaign":"Inactive","campaignMonitor":"Inactive","getResponse":"Inactive","aweber":"Inactive","markethero":"Inactive","SendinBlue":"Inactive","MailPoet":"Inactive","ConstantContact":"Inactive","mailchimp":"Inactive","WebHook":"Inactive","database":"Subscriber Already Exists"}  =============> é o erro depois que preenche o formulário. Eu recebo os dados e preciso que o link do arquivo carregue direto. 

      https://gestaotecc.com.br/wp-admin/admin-ajax.php?action=ulpb_formBuilderEmail_ajax               é o caminho de  onde eu devo por o código mas não sei exatamente onde pr as instruções. 
       
       
      ou aceito alguma outra ideia para resolver o problema para quando o usuário preencher o formulário o arquivo de downloads carregar automaticamente. 
    • By marcosAUG
      Crie uma classe que defina um vetor no plano. Crie métodos para permitir obter o versor, módulo e somar ao vetor uma série de outros vetores (usando *args), calcular o produto escalar e produto vetorial

      Uma duvida é de como usar a função *args nos métodos que o enunciado pede, e se tenho que mudar os métodos e atributos anteriores?
      class Vetor: def __init__(self, x, y, *args): self.__x = x self.__y = y def modulo(self): return (self.__x**2 + self.__y**2 )**(1/2) def versor(self): v1 = (self.__x)/(self.__x**2 + self.__y**2 )**(1/2) v2 = (self.__y)/(self.__x**2 + self.__y**2 )**(1/2) return v1, v2 def soma(self): pass def produto_escalar(self): pass def produto_vetorial(self): pass vetorA = Vetor(4,3) print("Modulo: ", vetorA.modulo()) print("Versor: ", vetorA.versor()) print("Soma: " )  
    • By DoVale
      Olá,
       
      To concluindo uma aplicação com django que gera certificado em pdf..
       
      Tava tudo certo até fazer deploy no heroku e ter que criar um s3 na amazom para colocar os arquivos staticos
       
      Tenho um html com o template do certificado que recebe os dados dos alunos tranquilo, o background (template do certificado) não está carregando, quando estava localhost, com o caminho da pasta, tava funcionando, mas agora não.
       
      A tag img funciona tranquilamente, mas o background por css não.
      Aqui o código do template:
      <meta charset="utf-8" /> {% load static %} <style type="text/css"> @page { size: 1122.52px 1587.4px ; /*size: A4 landscape;*/ margin: 0cm; background-image: url({{bg_front}}); height: 1588; } </style> <page backimgx="{{bg_front}}"> <!-- <page_header> ... </page_header> <page_footer> ... </page_footer> --> <img src="{{bg_front}}"> <div class="front"><br><br> <p style="margin-top: 35px; margin-left: 900px; font-size: 22px; line-height: 150%;"> <b text-align='center'>{{cpf}}</b> </p> <br /><br /><br /><br /><br /><br /><br /><br /><br /> <!-- <center><h4 style="font-size: 23px;">Certificado</h4></center> --> <p style="margin: 60px ;margin-left: 140px; font-size: 22px; line-height: 150%;">{{text_front}}</p> </div> <p style="margin-top: 1120px ;margin-left: 518px; font-size: 22px; line-height: 150%;"> {{cpf}} </p> </div> </page> </div> Abaixo o trecho do código em python 
      class ViewPDF(View): def get(self, request, *args, **kwargs): data = {} pdf = True if kwargs['pk']: # # CARREGAR DADOS DO ALUNO # try: participant = Participant.objects.get(pk=kwargs['pk']) print(participant.cpf) if participant.name: certificate = Certificate.objects.get(pk=participant.certificate.pk) pathBack = str(certificate.template.template_back.url) pathFront = str(certificate.template.template_front.url) print(pathFront) # # CONFIGURA OS BACKGROUNDS E TEXTO # data['bg_front'] = pathFront data['bg_back'] = pathBack setting = certificate.template.settings start_date = datetime.strftime(certificate.start_date,'%d/%m/%Y') end_date = datetime.strftime(certificate.start_date,'%d/%m/%Y') data['text_front'] = setting.replace('<<nome>>',participant.name).replace('<<cpf>>',str(participant.cpf)).replace('<<ch>>',str(certificate.ch)).replace('<<instituicao>>',str(certificate.institution)).replace('<<DataInicio>>',start_date).replace('<<DataFim>>',end_date) data['cpf'] = participant.cpf pdf = render_to_pdf('app_certificates/body_front_pdf.html', data) return HttpResponse(pdf, content_type='application/pdf') except TypeError as e: return HttpResponse(e) Já tentei várias coisas, o problema me parece ser com o css, pois funciona na tag img
       
       
    • By klonder
      Olá a todos(as)!
      Estava há 3 dias pesquisando sobre como resolver um problema que estava enfrentando em meu sistema, que consistia no seguinte:
      Implantar um Combobox com dados vindos do banco. Esse combobox deveria ser editável e apresentar os valores em seu popup suspenso. À medida em que o usuário fosse digitando, o autocomplete faria a busca em todos os valores já cadastrados e mostraria os compatíveis (procedimento até então comum em qualquer autocomplete). Todavia, o combobox só poderia perder o foco caso o texto inserido fosse exatamente igual a um dos valores existentes no popup, ou seja, não poderia ser  inserido nada que já não estivesse cadastrado anteriormente e presente na lista de valores.
      Após muito pesquisar, cheguei a um resultado muito satisfatório que compartilho com vocês, visto que varri a internet inteira à procura desse código e não encontrei em lugar nenhum. PyQt5 é extremamente pobre em tutoriais, principalmente em português.
       
      Segue o código que poderá ajudar quem precise:
      from PyQt5 import QtGui, QtCore, QtWidgets from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QComboBox, QLineEdit, QCompleter from PyQt5.QtCore import QSize, Qt, QSortFilterProxyModel, QStringListModel class Ui_Autocomplete(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 200, 800, 600) self.setWindowTitle('Autocomplete com combobox') self.cboxEstado = QComboBox(self) self.cboxEstado.move(50, 50) self.cboxEstado.addItem("Acre") self.cboxEstado.addItem("Amazonas") self.cboxEstado.addItem("Amapá") self.cboxEstado.addItem("Pará") self.cboxEstado.addItem("Rondônia") self.cboxEstado.addItem("Roraima") self.cboxEstado.addItem("Tocantins") self.cboxEstado.addItem("Distrito Federal") self.cboxEstado.addItem("Goiás") self.cboxEstado.addItem("Mato Grosso") self.cboxEstado.addItem("Mato Grosso do Sul") self.cboxEstado.addItem("Alagoas") self.cboxEstado.addItem("Bahia") self.cboxEstado.addItem("Ceará") self.cboxEstado.addItem("Maranhão") self.cboxEstado.addItem("Piauí") self.cboxEstado.addItem("Pernambuco") self.cboxEstado.addItem("Paraíba") self.cboxEstado.addItem("Rio Grande do Norte") self.cboxEstado.addItem("Sergipe") self.cboxEstado.addItem("Paraná") self.cboxEstado.addItem("Rio Grande do Sul") self.cboxEstado.addItem("Santa Catarina") self.cboxEstado.addItem("Espírito Santo") self.cboxEstado.addItem("Minas Gerais") self.cboxEstado.addItem("São Paulo") self.cboxEstado.addItem("Rio de Janeiro") self.cboxEstado.setEditable(True) self.cboxEstado.completer().setCompletionMode(QCompleter.PopupCompletion) self.cboxEstado.completer().setFilterMode(Qt.MatchContains) self.cboxEstado.completer().setCaseSensitivity(QtCore.Qt.CaseInsensitive) self.cboxEstado.focusOutEvent = self.pedeuFoco self.leRegiao = QLineEdit(self) self.leRegiao.move(250,50) self.leRegiao.resize(200, 22) def pedeuFoco(self,event): occur = 0 for i in range(len(self.cboxEstado)): if self.cboxEstado.currentText() == self.cboxEstado.itemText(i): occur = occur+1 if occur == 0: self.cboxEstado.lineEdit().setFocus() self.cboxEstado.lineEdit().selectAll() else: #Retira o cursor do widget QComboBox.focusOutEvent(self.cboxEstado,event) if __name__ == '__main__': import sys app = QApplication(sys.argv) mainWin = Ui_Autocomplete() mainWin.show() sys.exit(app.exec_())  
       
    • By Motta
      As 7 linguagens de programação que você deve aprender em 2020
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.