Expressões numéricas
Publicado por Lucas 28/10/2006
[ Hits: 25.197 ]
Homepage: http://lucasnogueira.wordpress.com
Checa expressões numéricas, verifica as chaves, colchetes, parênteses da expressão e operadores matemáticos.
Se em algum lugar da expressão o programa encontrar um erro do tipo, {1-[4*(2-3)-7]/10], observe que abre-se a chave, mas não tem fecha-chaves, no lugar tem um fecha-colchete, o programa acusa 'Expressão Incorreta!'.
# -*- coding: cp1252 -*-
import string
has_chv=False
has_key=False
has_par=False
has_fchv=False
has_fkey=False
has_fpar=False
error_operators=['!','#','$','%','&','\ ' ,':',';','<','>','?','@']
expr_true=True
expr=raw_input('Digite uma expressão numérica para ser checada:\n Ex: 1-{2+[9*1(1-3)-5]/4}. OBS: Testes aritméticos não serão feitos\n')
for k in range(len(expr)): # detecta controladores ( '{','[','(' e seus inversos e detecta equações)
if expr[k] == '{':
has_chv=True
elif expr[k] == '[':
has_key=True
elif expr[k] == '(':
has_par=True
elif expr[k] == '}':
has_fchv=True
elif expr[k] == ']':
has_fkey = True
elif expr[k] == ')':
has_fpar = True
elif expr[k] == '=':
print '= -> equações não são permitidas'
expr_true=False
for x in string.ascii_letters: #detecta vars ou icogn
if expr[k] == x:
print expr[k]+' -> icógnitas ou variáveis não são permitidas'
expr_true=False
for w in error_operators: #detecta operadores invalidos
if expr[k] == w:
print expr[k]+' -> operador inválido'
expr_true=False
if has_chv == True and has_fchv == False: #sintaxe de expressão checker {
print '}? -> expressão em aberto'
expr_true=False
if has_key == True and has_fkey == False: #sintaxe de expressão checker [
print ']? -> expressão em aberto'
expr_true=False
if has_par == True and has_fpar == False: #sintaxe de expressão checker (
print ')? -> expressão em aberto'
expr_true=False
if expr_true == True: #correct checker
print "Expressão correta!"
Dicionário Ingles de expressões.
Programa para calcular a média e a nota trimestral
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Pendrive Bootable [RESOLVIDO] (5)
Desenvolvi um programa de hot corner (você colocar o mouse nos cantos)... (3)









