Domanda

Grazie in anticipo! Sto scrivendo un programma per controllare se a è vero e poi tornare Vero o Falso. Ho bisogno di dividerlo in segno di uguale e quindi verificare se il 1 ° elemento della lista è uguale al secondo elemento e vice-versa. Ecco quello che ho finora:

def s_equation(a):
    equal=a.split("=")
È stato utile?

Soluzione

È possibile utilizzare eval () per valutare ogni parte dell'equazione:

def s_equation(a):
    left, right = a.split('=')
    return eval(left) == eval(right)

Alcuni test:

>>> s_equation('1+1+1=3')
True
>>> s_equation('2*2=8')
False

Altri suggerimenti

left, right = a.split("=")
assert left == right

Avrai bisogno di darci maggiori dettagli rispetto a che se si vuole una risposta utile. Stai cercando di scrivere un sistema di computer algebra completo (come ad esempio Mathematica)? Questo è un progetto Biiiiig ed è già stato fatto più volte. Considerare l'utilizzo di qualcosa come Sage .

Edit: la matematica mi ha picchiato al punzone , anche se mi consiglia di utilizzare ast.literal_eval invece di eval a meno che non vi fidate l'ingresso che riceverete.

Non c'è davvero dare informazioni sufficienti per rispondere bene alla tua domanda. Vuoi provarlo come identità (cioè testare l'algebra) o come un'uguaglianza istantanea?

Per i primi, (prima installare sympy):

import sympy

def s_equation(a):
    x = sympy.Symbol('x')
    y = sympy.Symbol('y')
    left, right = a.split('=')
    return eval (left + '==' + right)

utilizzo:

s_equation('x+x = x*2')
#True
s_equation('x+y**2 = y+x**2')
#False
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top