Problème programmation python

Mar02ius -  
0-Kzami Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je dois rendre un programme de maths basé sur la dichotomie (Le but étant de trouver une valeur approchée d'une solution f(x)=0, avec des fonctions n'ayant pas de valeurs exactes de la racine. Le principe de la dichotomie se base sur le calcul de l'intervalle de la solution, plus l'intervalle est petit, plus la valeur approchée de la solution est précise.
J'ai donc un problème, mon programme me paraît en effet bon, cependant celui-ci ne fonctionne pas et m'indique une erreur du type: TypeError: unsupported operand type(s) for -: 'str' and 'str'
Je vous met ci-dessous mon programme effectué, toute aide me serait précieuse merci.


#définitions des variables
a = float
b = float
c = float
p = float


#Saisie de programme
p = input("Entrez la précision voulue, p= ")
a = input("Entrez la borne a, a= ")
b = input("Entrez la borne b, b= ")
f = input ("Entrer la fonction utilisée, f(x)= ")

def f(x):
    return f

while (b-a)>p:      
    c = a+b/2      
    if f(a)*f(c)<0:   
        b = c
    else:
        a = c
    

print("Une racine entre" ,a, "et" ,b)



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
merci d'utiliser les balises de code pour publier du code.
quand tu as un message d'erreur, il est important d'indiquer à quelle ligne il se rapporte.
le message d'erreur t'indique que tu ne peux pas soustraire b de a, a et b étant des chaines de caractères.
je crois deviner ce que tu veux faire avec f, et cela ne va pas fonctionner.
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
J'ai ajouté la couleur.
0
0-Kzami Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Lorsque tu demande la valeur des variables, elles restent sous forme de chaîne de caractères. On ne peut pas faire d'opérations entre chaînes de caractères, il faut donc rajouter des int() autour des inputs() :

#définitions des variables
a = float
b = float
c = float
p = float


#Saisie de programme
p = int(input("Entrez la précision voulue, p= "))
a = int(input("Entrez la borne a, a= "))
b = int(input("Entrez la borne b, b= "))
f = int(input ("Entrer la fonction utilisée, f(x)= "))

def f(x):
    return f

while (b-a)>p:      
    c = a+b/2      
    if f(a)*f(c)<0:   
        b = c
    else:
        a = c
    

print("Une racine entre" ,a, "et" ,b)
0