Problème programmation python

Fermé
Mar02ius - Modifié le 1 déc. 2019 à 14:21
0-Kzami Messages postés 15 Date d'inscription samedi 28 décembre 2019 Statut Membre Dernière intervention 9 février 2020 - 28 déc. 2019 à 12:15
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.

2 réponses

yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477
1 déc. 2019 à 13:37
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 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
1 déc. 2019 à 14:21
J'ai ajouté la couleur.
0
0-Kzami Messages postés 15 Date d'inscription samedi 28 décembre 2019 Statut Membre Dernière intervention 9 février 2020
28 déc. 2019 à 12:15
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