question

Retrouver tous les sujets résolus.
Répondre
pauline

question

Message par pauline » sam. 21 mai 2022 21:03

Bonsoir
Pourquoi ce script
def pointsurdroite(x,y):
if 5*x-6*y+10=0:
print("lepointestsurladroite")
else :
print ("lepointn'estpassurladroite")

ne marche pas ?

Merci
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: question

Message par sos-math(21) » dim. 22 mai 2022 08:44

Bonjour,
en Python, le symbole pour le test d'égalité est le double égal "==", le symbole "=" étant réservé pour l'affectation.
Donc tu devrais avoir :

Code : Tout sélectionner

def pointsurdroite(x,y):
    if 5*x-6*y+10==0:
        print("le point est sur la droite")
    else :
        print ("le point n'est pas sur la droite")
Attention tout de même car tu utilises un test entre nombres flottants (les décimaux de Python), et il se peut que tu obtiennes des erreurs alors que tes points appartiennent bien à la droite.
Par exemple le point (-1,88;0,1) appartient bien à la droite car \(-1,88\times 5-6\times 0,1+10=-9,4-0,6+10=0\).
Mais en Python, l'appel renvoie une non-appartenance :

Code : Tout sélectionner

>>>pointsurdroite(-1.88,0.1)
le point n'est pas sur la droite
C'est lié au fait que les nombre décimaux sont représentés par des valeurs approchés en machine :

Code : Tout sélectionner

>>> 6*0.1
0.6000000000000001
Tu pourras en parler avec ton professeur.
Bonne continuation
pauline

Re: question

Message par pauline » dim. 22 mai 2022 09:14

Merci beaucoup !
en premier je dois tester si le point de coordonnés (10,10) appartient à la droite mais ca ne marche pas quand je fais...

def pointsurdroite(10,10):
if 5*x-6*y+10==0:
print("le point est sur la droite")
else :
print ("le point n'est pas sur la droite")

Pourquoi donc ?

Merci
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: question

Message par sos-math(21) » dim. 22 mai 2022 09:22

Bonjour,
il faut que tu distingues les deux zones de ton environnement :
la zone de script ou tu écris la définition de ta fonction avec le mot clé def :

Code : Tout sélectionner

def pointsurdroite(x,y):
    if 5*x-6*y+10==0:
        print("le point est sur la droite")
    else :
        print ("le point n'est pas sur la droite")
et la console où tu vas appeler ta fonction :

Code : Tout sélectionner

>>> pointsurdroite(10,0)
le point n'est pas sur la droite
Il ne faut donc pas modifier la définition de ta fonction (on ne touche pas au script qui la définit), mais il faut l'appeler.
capture_python.png
Bonne continuation
pauline

Re: question

Message par pauline » dim. 22 mai 2022 09:25

Merci, j'ai bien compris tout ca.
Mais du coup ou est ce que je rentre les coordonés ? là j'essaie sur trinket, et est ce que c'est pareil sur la calculette Numwork ?

Merci !!
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: question

Message par sos-math(21) » dim. 22 mai 2022 09:29

Bonjour,
tu écris :

Code : Tout sélectionner

pointsurladroite(10,0)
dans la zone à droite sur Trinket
Si cela n'est pas possible, tu demandes un affichage dans la zone de script :

Code : Tout sélectionner

def pointsurdroite(x,y):
    if 5*x-6*y+10==0:
        print("le point est sur la droite")
    else :
        print ("le point n'est pas sur la droite")

print(pointsurdroite(10,0)) # affichage pour avoir le résultat de l'appel de la fonction

pauline

Re: question

Message par pauline » dim. 22 mai 2022 09:43

merci j'ai réussi pour le 1er point dans la zone de script
par contre pour le deuxieme de coordonés (-53;-42.5)
ca ne marche pas... il faut faire une conversion ? Merci
sos-math(21)
Messages : 10334
Enregistré le : lun. 30 août 2010 11:15

Re: question

Message par sos-math(21) » dim. 22 mai 2022 09:46

Bonjour,
non pas la peine de faire une conversion mais il faut mettre des points pour les séparateurs décimaux et une virgule pour séparer \(x\) et \(y\) :

Code : Tout sélectionner

>>> pointsurdroite(-53,-42.5)
le point est sur la droite
Bon calcul
Répondre