Salut 
Je suis en train de faire quelques petits programmes de calcul formel, par exemple :
- systèmes d'équations à 2 inconnues
- équations du second degré
- théorème de Pythagore
- additions de vecteurs
Bref,
je voudrais, par exemple, quand j'ai à calculer 12/8 qu'il ne me donne non pas 1.5 mais 3/2 ! 
Et ceci pour des calculs beaucoup plus compliqués.
Y'a les simplifications de fraction, mais aussi par exemple le fait de tomber sur une racine carré qui ne tombe pas juste (par exemple : sqrt(25)=5 donc ça c'est bon mais sqrt(26)=5,0990195135927848300282241090228 donc là je voudrais qu'il affiche sqrt(26) !
Voici mon code pour le second degré (qui donne aussi un tableau de signe tout dégueulasse, mais ça c'est parce que je ne me suis pas occupé de l'interface graphique) :
import os
from math import *
while 1:
a=float(input("A = "))
if a==0:
print("\"A\" doit être différent de 0 !")
else:
break
b=float(input("B = "))
c=float(input("C = "))
delta=b**2-4*a*c
if delta > 0:
x1=(-b-sqrt(delta))/(2*a)
x2=(-b+sqrt(delta))/(2*a)
print("Delta =",delta,"\nDelta > 0 donc 2 solutions réelles")
print("x1 =",x1,"\nx2 =",x2)
if -a < 0:
sma="-"
else:
sma="+"
if a < 0:
sa="-"
else:
sa="+"
print("/",sa,"/",x1,"/",sma,"/",x2,"/",sa,"/")
if delta == 0:
x=(-b/(2*a))
print("Delta =",delta,"\nDelta = 0 donc 1 solution réelle")
print("x =",x)
if delta < 0 :
i=complex(0,1)
print("Delta =",delta,"\nDelta < 0 donc deux solutions complexes.")
z1 = (-b-sqrt(-delta)*i)/(2*a)
z2 = (-b+sqrt(-delta)*i)/(2*a)
print("z1 =",z1,"\nz2 =",z2)
os.system("pause")
Voici ce que ça peut donner :
http://i.gyazo.com/35bfb6ff1813df112a8fb077430508dc.png
http://i.gyazo.com/9cf5b5f1d49b8a9475a24c422d6a9c0d.png
comme vous le voyez, c'est assez désagréable à lire 
donc je voudrais avoir des valeurs exactes afin de pouvoir y voir plus clair 
Si vous pouviez m'aider...
