pilha.py
Click here to get the file
Size
2.3 kB
-
File type
text/python-source
File contents
# ----------------------------------------------------------------------
# Funcao da questao 3 do teste 2 (BSI-2011.2)
# ----------------------------------------------------------------------
def pilha(n):
q = n # Esse numero sera modificado durante a execucao
algarismos = [] # Lista que vai armazenar os algarismos de n
empilhados = [] # Lista de algarismos empilhados
# Armazenando os algarismos de n na lista
if q==0:
algarismos.append(q) # append adiciona um elemento no final da lista
else:
while q!=0: # Executar os comando a seguir ate que q seja zero
algarismos.insert(0, q%10) # q%10 (q mod 10) = algarimos das unidades
# sera inserido no inicio da lista
q = q/10 # A divisao inteira por 10 corta o ultimo algarismo de q.
# Empilhar e desempilhar: Nao nulo empilha; nulo desempilha
for i in range(len(algarismos)):
if algarismos[i]!=0: # Algarismo nao nulo sera inserido no topo (inicio)
empilhados.insert(0,algarismos[i])
else: #Algarismo nulo...
if len(empilhados)>0: # se a lista nao esta vazia...
empilhados.pop(0) # retira o primeiro elemento
else: # Mas, se a lista esta vazia...
print n,
print 'nao pertence ao dominio da funcao.'
break # Encerra o processamento dos algarismos
# No final, caso a lista esteja vazia, a imagem sera zero
if len(empilhados)==0:
print 'F(',
print n,
print ') = 0'
else:
print 'F(',
print n,
print ') = ',
for i in range(len(empilhados)):
print empilhados[i],
# ----------------------------------------------------------------------
# Processamento
# ----------------------------------------------------------------------
print '----------------------------------------------------------------------------'
print ' *** FUNCAO EMPILHAR-DESEMPILHAR ***'
print '----------------------------------------------------------------------------'
n = raw_input("Informe o numero para que os blocos sejam empilhados/desempilhados: ")
print
pilha(int(n))