Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 07-04-2021 09:01:22

Mouss
Membre
Inscription : 23-04-2020
Messages : 105

Programme python x²=r

Bonjour,

J'ai besoin de votre aide, dans ce programme :

from math import sqrt
def fonction(r):
  x=sqrt(r)
  if r==0:
    print("x=0")
  elif r>0:
    print(f"x={x} ou x={-x}")
  else:
    print("Il n'y a pas se solution.")

je ne comprends pas cette instruction : f"x={x} ou x={-x}"

Autre question, on a utilisé une fonction et pourtant il n'y a pas de return à la fin.

Merci davance,

Hors ligne

#2 07-04-2021 10:57:29

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : Programme python x²=r

Salut,

l'instruction que tu ne comprends pas est simple : le carré d'un nombre négatif est positif, donc la racine carrée d'un nombre positif est soit positive, soit négative.
Exemple 4 qui est le carré de 2 ou de -2 . Vois tu mieux ?
Pour la seconde question, yoshi te dira s'il passe par là !


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#3 07-04-2021 11:05:06

Mouss
Membre
Inscription : 23-04-2020
Messages : 105

Re : Programme python x²=r

Merci pour votre reponse.
Cest ce qui me pose probleme, moi jaurai ecrit :
return (sqrt(r), - sqrt(r)) cest pour cela que je ne comprends linstruction f"x={x} ou x={-x}", que signifie le f et quelle est la fonction des accolades ?
Merci !

Hors ligne

#4 07-04-2021 12:08:21

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 989

Re : Programme python x²=r

Bonjour,

1. On a utilisé une fonction et pourtant il n'y a pas de return à la fin.
    Parce que ce n'est pas une fonction mais une procédure...
    C'est une distinction subtile.
    Pour transformer cette procédure en fonction au sens strict du terme, tu peux rajouter un return à la fin sans rien derrière.
    Mais alors, ça retourne quoi  si on ne lui donne rien à retourner ?
    Bin... rien !
    Regarde

def carre(x):
    x=x^2
    return

print(carre(3))
None

    Et "None", c'est bien rien ! Alors pourquoi utiliser une fonction si c'est pour ne rien retourner ?
    On utilise une procédure quand ce sous-programme n'a pas besoin de retourner quoi que ce soit, qu'il se suffit par lui-même.

2. Une chaîne de caractères formatée, ou chaîne f, est une chaîne de caractères qui est préfixé par "f" ou "F".
    Ces chaînes peuvent contenir des champs de remplacement, qui sont des expressions délimitées par des accolades {}.
    Alors que les autres chaînes de caractères ont toujours une valeur constante, les chaînes de caractères formatées
    sont en fait des expressions évaluées au moment de l'exécution.
    Disponible à partir de Python 3.6 : avec mon Python 3.5, ça ne fonctionne pas chez moi...
    Ici, la chaîne de caractères en question est "x={x} ou x={-x}".
    En Python 3.x (avec x<6) pour obtenir le même résultat je suis obligé de doubler les chaînes :
    print ("x=",x,"ou x=",-x)

3. Pourtant ce script (j'ai récrit la fin pour Python <3.6) :

from math import sqrt

def fonction(r):
    x=sqrt(r) # Là, est le souci
    if r==0:
        print("x=0")
    elif r>0:
        print("x=",x,"ou x=",-x)
    else:
        print("Il n'y a pas de solution.")

va planter dès le départ là où je l'ai signalé en commentaire...

Parce que dans ce script rien ne m'interdit d'appeler fonction(-4) :.
Pourtant le cas est prévu dans après le else: ?
Certes,  mais il aura commencé par calculer x=sqrt(r) avec r=-4 et Python ne va pas aimer et il te le fait savoir :
>>> fonction(-4)
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    fonction(-4)
  File "<pyshell#3>", line 2, in fonction
    x=sqrt(r)
ValueError: math domain error

Procédure corrigée :

from math import sqrt

def fonction(r):
    if r==0:
        print("x=0")
    elif r>0:
        x=sqrt(r)
        print("x=",x,"ou x=",-x)
    else:
        print("Il n'y a pas de solution.")

@freddy
Je suis très très heureux de te revoir...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#5 07-04-2021 12:11:59

LEG
Membre
Inscription : 19-09-2012
Messages : 694

Re : Programme python x²=r

Bonjour
ben :  il me semble que la fonction des accolades {x} et {-x} sert à imprimer la valeur des tes x sinon cela n'imprime rien  le f" prend en compte l'instruction de ta ligne.
pourquoi tu n'essayes pas de remplacer tes accolade par (x) et (-x) tu vas vite comprendre...et si tu enlèves ton f" tu auras surement un message d'erreur de python

Dernière modification par LEG (07-04-2021 12:12:31)

Hors ligne

#6 09-04-2021 14:56:12

Butanium
Invité

Re : Programme python x²=r

C'est une synthaxe abrégée pour
print("x = {} ou x = {}".format(x, -x))
Je te laisse consulter la doc pour format pour plus d'informations : https://docs.python.org/fr/3/tutorial/inputoutput.html

Pied de page des forums