Expressões numéricas

Publicado por Lucas 28/10/2006

[ Hits: 23.734 ]

Homepage: http://lucasnogueira.wordpress.com

Download mathexpr_checker.py




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!'.

  



Esconder código-fonte

# -*- 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!"

Scripts recomendados

LISCH e EISCH - Método de resolução de colisão

Problema das Oito Rainhas (Random)

Script para obter um wallpaper de como está o globo em tempo real

Consumo de memória por processo

O maior quebra cabeças de sempre


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts