PCSI 2016/17 Utilisation de fonctions en Python

publicité
PCSI 2016/17
Utilisation de fonctions en Python
Quand une certaine tâche doit être accomplie à différents endroits d’un programme, il est peu pratique de
répéter le code à chaque endroit. Les fonctions (appelées aussi procédures d’autres langages de programmation)
permettent de décomposer un programme complexe en une série de sous-programmes plus simples.
En python, une fonction s’utilise de la manière suivante :
>>> nomDeLaFonction(liste de paramètres séparés par des virgules)
exécuter une fonction (on dit aussi : faire un appel de fonction) a les deux effets suivants :
1. Modifier l’état de l’ordinateur ; en particulier, certaines variables stockées en mémoire vive peuvent
changer de valeur. De ce point de vue, une fonction au sens informatique (appelée aussi procédure dans
d’autres langages de programmation) diffère d’une fonction au sens mathématique.
2. Renvoyer une valeur lorsqu’elle se termine (de la même manière qu’une fonction au sens mathématique),
par exemple sin(π/6) renvoie la valeur 0.5 (à supposer que sin et π soient connus par python.)
Certaines fonctions sont déjà intégrées au langage Python, voir http ://docs.python.org/3/library/functions.html
pour plus de détail. Voici ce que font les plus simples d’entre elles :
abs(x) Renvoie la valeur absolue (ou le module) du nombre x
complex(x,y) Crée le nombre complexe x + iy ; en Python, il s’affiche ainsi : (x + yj)
float(x) Convertit l’entier ou la chaîne x en «nombre à virgule flottante»
help(objet) Affiche une page d’aide concernant objet qui peut être un module, une fonction, une méthode,
un mot clé ou un sujet de la documentation officielle sur Python.
input(message) Affiche la chaîne de caractères message, puis invite l’utilisateur à entrer des caractères au
clavier. Lorsque la touche <Entrée> est enfoncée, la fonction renvoie la chaîne que l’utilisateur a saisie
et le programme se poursuit.
len(s) Renvoie la longueur de la séquence s ; une séquence peut être une chaîne de caractères, une liste, un
tuple ou un dictionnaire.
min,max(s) Renvoie le minimum, maximum d’une séquence s ayant au moins deux termes.
pow(x,y) Renvoie x à la puissance y
print(liste d’objets) Affiche la liste d’objets séparés par des espaces terminée par un retour à la ligne. On
peut modifier les paramètres "sep" (le séparateur) et "end" (la terminaison), exemple :
print("12","45","58",sep="+",end="=?")
range(début,fin,pas) Renvoie une séquence d’entiers commençant à début (0 si la fonction n’a qu’un seul
paramètre) jusqu’à une valeur strictement inférieure à fin, en suite arithmétique de raison pas (1 si la
fonction a 1 ou 2 arguments).
round(x,n) Arrondit le nombre x à n chiffres après la virgule. Si le second argument n est absent, il vaut
0 par défaut.
D’autres fonctions sont définies dans des fichiers séparés appelés «modules». Par exemple, le module math
contient la définition de la fonction exponentielle appelée exp. Pour affecter e2 à la variable x, les deux méthodes
suivantes sont possibles :
1. from math import exp
x=exp(2)
2. import math
x=math.exp(2)
Une fonction peut être définie avec le mot-clé def. Par exemple :
def carre(x):
y = x**2 # y est une variable locale
print("le carré de ",x," vaut ",y) # message affiché à l’écran
return y
Ici, la fonction carre a un paramètre appelé x. Les instructions qui forment le corps de la fonction commencent
à la ligne suivante et doivent être indentées. x et y sont des variables locales de la fonction carre : un appel de
la fonction carre ne modifie pas les valeurs de variables x ou y définies à l’extérieur de la fonction.
Le mot-clé return indique la valeur renvoyée par la fonction. Un appel de fonction se termine à la fin d’une
ligne commençant par return. Si return est absent la fonction ne renvoie aucune valeur, plus précisément elle
renvoie l’objet python appelé None (rien du tout en anglais ! ).
Avec IDLE3 créer un script python appelé fonctions_tp2.py (pour l’instant vide.)
Certains exercice (par exemple l’exo2) demandent l’écriture d’un programme. Il faudra alors définir une
fonction sans argument appelée par exemple exo2() dans ce script. Le programme sera testé en exécutant le
script par la commande Run Module ou le raccourci clavier <F5>, puis en faisant un appel de cette fonction.
D’autres exercices (par exemple l’exo4) demandent l’écriture d’une fonction qui sera alors définie dans le
script, puis appelée comme avant.
Essayer également de commenter votre code pour le rendre compréhensible : on peut insérer des commentaires
à peu près n’importe où en les faisant précéder d’un caractère #. Lorsqu’il rencontre ce caractère, l’interpréteur
Python ignore tout ce qui suit, jusqu’à la fin de la ligne courante.
1. (a) Commencer l’écriture du fichier fonctions_tp2.py en y recopiant la définition précédente de la
fonction carre(), puis charger ce fichier.
(b) Faire quelques tests pour comprendre comment Python se comporte avec les variables. Par exemple
taper les instructions : x,y=7,6 carre(4) z=carre(5) z print(x,’**’,y) . . .
2. Au moyen de la fonction input(), inviter l’utilisateur à entrer 2 nombres x (par exemple 3) et y (par
exemple 5) , puis (dans le cas particulier de l’exemple) afficher le message :
3 plus 5 égale 8
3. Utiliser la formuler C = 5 ∗ (F − 32)/9 pour afficher une table de conversion des températures en degrés
Farenheit (F) et de leurs équivalents en degrés Celsius (C) : chaque ligne de la table consistera en deux
valeurs correspondantes, F variant de 0 à 300 degrés Farenheit et augmentant de 20 degrés à chaque
ligne. Les degrés Celsius seront arrondis à l’unité.
4. Une année est bissextile si elle est divisible par 4, mais pas par 100, à l’exception des années multiples
de 400 qui sont bien bissextiles.
Ecrire une fonction bissextile() telle que l’appel bissextile(n) affiche «l’année n est bissextile» ou
bien «l’année n n’est pas bissextile» selon le cas, mais ne renvoie aucune valeur.
5. (a) Ecrire une fonction degre2radian() qui convertit en radians un angle fourni au départ sous la forme
(degrés,minutes,secondes).
(b) Ecrire la fonction radian2degre() inverse de la précédente.
6. (a) Définir la fonction factorielle.
(b) Définir la fonction nbzeros() telle que nbzeros(n) renvoie le nombre de zéros qui terminent l’écriture
décimale de l’entier n.
(c) Par combien de zéros se termine 10000 !
7. On appelle suite de Syracuse une suite d’entiers définie ainsi :
On part d’un nombre entier n ∈ N∗ ; s’il est pair, on le divise par 2 ; s’il est impair, on le multiple par
3 et on ajoute 1. En répétant l’opération, on obtient une suite d’entiers positifs dont chacun ne dépent
que de son prédécesseur.
Par exemple, la suite de Syracuse du nombre 14 est : 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16,
8, 4, 2, 1, 4, 2 . . .
Ecrire une fonction syracuse(n) qui affiche les termes de la suite de Syracuse de n jusque la valeur 1
soit atteinte.
Il a été conjecturé que la suite de Syracuse de n’importe quel entier strictement positif atteint 1. En dépit
de la simplicité de son énoncé, cette conjecture défie depuis de nombreuses années les mathématiciens.
8. Ecrire un programme qui affiche les 20 premiers termes de la table de multiplication par 7, en signalant
à l’aide d’une astérisque ceux qui sont multiples de 3.
Exemple : 7 14 21 * 28 35 42 * 49 . . .
∗
∗ ∗
9. Ecrire la fonction triangle(n) qui affiche n lignes de la forme : ∗ ∗ ∗
..
..
.
.
∗ ∗ ... ... ∗
10. La suite u de Fibonacci est définie par : u0 = 1, u1 = 2 et un+2 = un + un+1 pour tout entier n.
Ecrire une fonction fibo(n) qui affiche les termes de la suite u qui ne dépassent pas la valeur n.
11. Un nombre parfait est un entier naturel égal à la somme de tous ses diviseurs autres que lui-même. Par
exemple 6 = 1 + 2 + 3 est parfait.
Ecrire une fonction parfait(n) qui affiche tous les nombres parfaits inférieurs ou égaux à n.
Téléchargement