def treatInput(self): arr = [] arrID = [] for line in sys.stdin.readlines(): try: temp = map(int, line.split()) if(len(temp) == 3): if(temp[2]<temp[1]): raise MyError("erro; segunda coordenada menor que a primeira") elemento=Elemento(temp[0], temp[1], temp[2]) arr.append(elemento) arrID = self.checkID(arrID, elemento.getId()) else: raise MyError("erro; Numero invalido de argumentos") except ValueError: print "erro; Entrada invalida, possiveis caracteres na entrada" raise SystemExit except MyError as err: print err.str raise SystemExit try: if len(arr)<=1: raise MyError("erro; Colecao pequena demais") except MyError as err: print err.str raise SystemExit # Sort array based on first coordinate arr=sorted(arr, key=self.getFirstCoordinate) return arr
def inserirNaFrente(self, dado): novo = Elemento(dado) if self.lista_vazia(): self.__inicio = novo self.__fim = novo self.__tamanho += 1 else: anterior = novo.anterior(None) posterior = novo.posterior(self.__inicio) self.__inicio = novo self.__tamanho += 1
def inserirNoFinal(self, novo_elemento): novo = Elemento(novo_elemento) if self.lista_vazia(): self.__inicio = novo self.__fim = novo self.__tamanho += 1 else: self.__fim.posterior = novo novo.anterior = self.__fim novo.posterior = None self.__fim = novo self.__tamanho += 1
def deslocar(self): # criando quadrado novo (cabeca): cabeca = self.get_cabeca() x = int(math.cos(math.radians(cabeca.get_orientacao()))) y = int(math.sin(math.radians(cabeca.get_orientacao()))) xc, yc = cabeca.get_posicao() self.__corpo.append(Elemento(cabeca.get_orientacao(), [xc+x, yc+y], self.__cor, self.__lado_quadrado)) if self.__comeu: self.__comeu = 0 else: del self.__corpo[0]
def inserirDepoisDoAtual(self, atual, novo_elemento): elemento_atual = self.buscar(atual) novo = Elemento(novo_elemento) novo.anterior = elemento_atual novo.posterior = elemento_atual.posterior elemento_atual.posterior = novo
def inserirAntesDoAtual(self, atual, novo_elemento): elemento_atual = self.buscar(atual) novo = Elemento(novo_elemento) novo.anterior = elemento_atual.anterior novo.posterior = elemento_atual elemento_atual.anterior = novo
def __init__(self, posicao_inicial=[10,10], cor=cores_rgb.green, tamanho_inicial=3, lado_quadrado=30): xini, yini = posicao_inicial self.__corpo = [Elemento(0, [x, yini], cor, lado_quadrado) for x in range(xini, xini + tamanho_inicial)] self.__cor = cor self.__lado_quadrado = lado_quadrado self.__comeu = 0
def get_cabeca_futuro(self): cabeca = self.get_cabeca() x = int(math.cos(math.radians(cabeca.get_orientacao()))) y = int(math.sin(math.radians(cabeca.get_orientacao()))) xc, yc = cabeca.get_posicao() return Elemento(cabeca.get_orientacao(), [xc+x, yc+y], self.__cor, self.__lado_quadrado)
# -*- coding: utf-8 -*- from elemento import Elemento from tabla_periodica import TablaPeriodica from compuesto import Compuesto from medio import Medio oxigeno = Elemento("O", 8, 8, 4) hidrogeno = Elemento("H", 1, 0, 1) carbono = Elemento("C", 6, 6, 4) nitrogeno = Elemento("N", 7, 7, 3) tabla = TablaPeriodica([oxigeno, hidrogeno, carbono, nitrogeno]) tablaVacia = TablaPeriodica() nh3 = Compuesto('NH3') nh3.agregarAtomo(nitrogeno) nh3.agregarAtomos(hidrogeno, 3) nh3.enlazarConVarios("N1", ["H1", "H2", "H3"]) agua = Compuesto("H2O") agua.agregarAtomo(oxigeno) agua.agregarAtomos(hidrogeno, 2) agua.enlazarConVarios("O1", ["H1", "H2"]) metano = Compuesto("CH4") metano.agregarAtomo(carbono) metano.agregarAtomos(hidrogeno, 4) metano.enlazarConVarios("C1", ["H1", "H2", "H3", "H4"]) co2 = Compuesto("CO2")