Introduction
Cette section traite de la création de votre premier programme, de l'exécution de l'interpréteur et de quelques déboguages de base.
This tutorial is from open-source community. Access the source code
Cette section traite de la création de votre premier programme, de l'exécution de l'interpréteur et de quelques déboguages de base.
Les programmes Python s'exécutent toujours dans un interpréteur.
L'interpréteur est une application "basée sur une console" qui s'exécute normalement à partir d'un shell de commande.
python3
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Les programmeurs experts n'ont généralement aucun problème à utiliser l'interpréteur de cette manière, mais ce n'est pas très convivial pour les débutants. Vous pouvez utiliser un environnement qui fournit une interface différente pour Python. C'est bien, mais apprendre à exécuter le terminal Python est toujours une compétence utile à connaître.
Lorsque vous lancez Python, vous obtenez un mode interactif dans lequel vous pouvez expérimenter.
Si vous commencez à taper des instructions, elles seront exécutées immédiatement. Il n'y a pas de cycle d'édition/ compilation/ exécution/ débogage.
>>> print('hello world')
hello world
>>> 37*42
1554
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>>
Ce qu'on appelle read-eval-print-loop (ou REPL) est très utile pour le débogage et l'exploration.
ARRÊT: Si vous ne savez pas comment interagir avec Python, arrêtez ce que vous faites et trouvez comment le faire. Si vous utilisez un IDE, il peut être caché derrière une option de menu ou une autre fenêtre. De nombreuses parties de ce cours supposent que vous pouvez interagir avec l'interpréteur.
Regardons de plus près les éléments du REPL:
>>> est l'invite de commande de l'interpréteur pour commencer une nouvelle instruction.... est l'invite de commande de l'interpréteur pour continuer une instruction. Appuyez sur Entrée pour terminer de taper et exécuter ce que vous avez entré.L'invite ... peut ou non être affichée selon votre environnement. Pour ce cours, elle est affichée comme des espaces pour faciliter la copie/collage d'échantillons de code.
Le tiret bas _ contient le dernier résultat.
>>> 37 * 42
1554
>>> _ * 2
3108
>>> _ + 50
3158
>>>
Cela ne vaut que dans le mode interactif. Vous n' utilisez jamais _ dans un programme.
Les programmes sont enregistrés dans des fichiers .py.
## hello.py
print('hello world')
Vous pouvez créer un fichier hello.py dans le répertoire /home/labex/project à l'aide de votre éditeur de texte favori.
Pour exécuter un programme, exécutez-le dans le terminal avec la commande python. Par exemple, en ligne de commande Unix :
$ python hello.py
hello world
bash %
Ou à partir du shell Windows :
C:\SomeFolder>hello.py
hello world
C:\SomeFolder>c:\python36\python hello.py
hello world
Remarque : Sous Windows, vous devrez peut-être spécifier le chemin complet vers l'interpréteur Python tel que c:\python36\python. Cependant, si Python est installé de manière habituelle, vous devriez peut-être seulement être en mesure de taper le nom du programme tel que hello.py.
Résolvons le problème suivant :
Un matin, vous sortez et placez un billet de dollar sur le trottoir près de la Tour Sears à Chicago. Chaque jour après, vous sortez et doublez le nombre de billets. Combien de temps faut-il pour que la pile de billets dépasse la hauteur de la tour?
Voici une solution pour créer un fichier sears.py dans le répertoire /home/labex/project :
## sears.py
bill_thickness = 0.11 * 0.001 ## Mètres (0,11 mm)
sears_height = 442 ## Hauteur (mètres)
num_bills = 1
day = 1
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
print('Nombre de jours', day)
print('Nombre de billets', num_bills)
print('Hauteur finale', num_bills * bill_thickness)
Lorsque vous l'exécutez, vous obtenez la sortie suivante :
$ python3 sears.py
1 1 0.00011
2 2 0.00022
3 4 0.00044
4 8 0.00088
5 16 0.00176
6 32 0.00352
...
21 1048576 115.34336
22 2097152 230.68672
Nombre de jours 23
Nombre de billets 4194304
Hauteur finale 461.37344
En utilisant ce programme comme guide, vous pouvez apprendre un certain nombre de concepts clés importants sur Python.
Un programme Python est une séquence d'instructions :
a = 3 + 4
b = a * 2
print(b)
Chaque instruction est terminée par un retour à la ligne. Les instructions sont exécutées les unes après les autres jusqu'à ce que le contrôle atteigne la fin du fichier.
Les commentaires sont du texte qui ne sera pas exécuté.
a = 3 + 4
## Ceci est un commentaire
b = a * 2
print(b)
Les commentaires sont dénotés par # et s'étendent jusqu'à la fin de la ligne.
Une variable est un nom pour une valeur. Vous pouvez utiliser les lettres (minuscules et majuscules) de a à z. De même que le caractère tiret bas _. Les nombres peuvent également faire partie du nom d'une variable, sauf en tant que premier caractère.
height = 442 ## valide
_height = 442 ## valide
height2 = 442 ## valide
2height = 442 ## invalide
Les variables n'ont pas besoin d'être déclarées avec le type de la valeur. Le type est associé à la valeur du côté droit, pas au nom de la variable.
height = 442 ## Un entier
height = 442.0 ## Nombre à virgule flottante
height = 'Really tall' ## Une chaîne de caractères
Python est à typage dynamique. Le "type" perçu d'une variable peut changer au fur et à mesure que le programme s'exécute, selon la valeur actuelle assignée à celle-ci.
Python est sensible à la casse. Les lettres majuscules et minuscules sont considérées comme des lettres différentes. Toutes ces variables sont différentes :
name = 'Jake'
Name = 'Elwood'
NAME = 'Guido'
Les instructions de langage sont toujours en minuscules.
while x < 0: ## OK
WHILE x < 0: ## ERREUR
L'instruction while exécute une boucle.
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
print('Number of days', day)
Les instructions indentées sous le while seront exécutées tant que l'expression après le while est vraie.
L'indentation est utilisée pour désigner des groupes d'instructions qui appartiennent ensemble. Considérez l'exemple précédent :
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
print('Number of days', day)
L'indentation regroupe les instructions suivantes comme les opérations qui se répètent :
print(day, num_bills, num_bills * bill_thickness)
day = day + 1
num_bills = num_bills * 2
Comme l'instruction print() à la fin n'est pas indentée, elle n'appartient pas à la boucle. La ligne vide n'est là que pour la lisibilité. Elle n'affecte pas l'exécution.
La seule exigence de Python est que l'indentation au sein d'un même bloc soit cohérente. Par exemple, voici une erreur :
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = day + 1 ## ERREUR
num_bills = num_bills * 2
L'instruction if est utilisée pour exécuter une condition :
if a > b:
print('Computer says no')
else:
print('Computer says yes')
Vous pouvez vérifier plusieurs conditions en ajoutant des vérifications supplémentaires en utilisant elif.
if a > b:
print('Computer says no')
elif a == b:
print('Computer says yes')
else:
print('Computer says maybe')
La fonction print produit une seule ligne de texte avec les valeurs passées.
print('Hello world!') ## Affiche le texte 'Hello world!'
Vous pouvez utiliser des variables. Le texte affiché sera la valeur de la variable, pas le nom.
x = 100
print(x) ## Affiche le texte '100'
Si vous passez plus d'une valeur à print, elles sont séparées par des espaces.
name = 'Jake'
print('My name is', name) ## Affiche le texte 'My name is Jake'
print() met toujours un retour à la ligne à la fin.
print('Hello')
print('My name is', 'Jake')
Cela affiche :
Hello
My name is Jake
Le retour à la ligne supplémentaire peut être supprimé :
print('Hello', end=' ')
print('My name is', 'Jake')
Ce code affichera maintenant :
Hello My name is Jake
Pour lire une ligne d'entrée saisie par l'utilisateur, utilisez la fonction input() :
name = input('Enter your name:')
print('Your name is', name)
input affiche une invite à l'utilisateur et renvoie leur réponse. Cela est utile pour de petits programmes, des exercices d'apprentissage ou pour le débogage simple. Il n'est pas largement utilisé pour les programmes réels.
Parfois, vous devez spécifier un bloc de code vide. Le mot-clé pass est utilisé à cet effet.
if a > b:
pass
else:
print('Computer says false')
Cela est également appelé une instruction "no-op" (qui ne fait rien). Elle ne produit aucun effet. Elle sert de substitut à des instructions, éventuellement à ajouter plus tard.
Il s'agit du premier ensemble d'exercices où vous devrez créer des fichiers Python et les exécuter. A partir de maintenant, il est supposé que vous éditez des fichiers dans le répertoire ~/project/. Pour vous aider à trouver le bon emplacement, un certain nombre de fichiers de départ vides ont été créés avec les noms de fichiers appropriés. Cherchez le fichier bounce.py utilisé dans le premier exercice.
Une balle de caoutchouc est laissée tomber d'une hauteur de 100 mètres et chaque fois qu'elle touche le sol, elle rebondit jusqu'à 3/5 de la hauteur à laquelle elle est tombée. Écrivez un programme bounce.py qui imprime un tableau montrant la hauteur des 10 premiers rebonds.
Voici une solution :
## bounce.py
height = 100
bounce = 1
while bounce <= 10:
height = height * (3 / 5)
print(bounce, round(height, 4))
bounce += 1
Votre programme devrait produire un tableau ressemblant à ceci :
1 60.0
2 36.0
3 21.599999999999998
4 12.959999999999999
5 7.775999999999999
6 4.6655999999999995
7 2.7993599999999996
8 1.6796159999999998
9 1.0077695999999998
10 0.6046617599999998
Nota : Vous pouvez un peu nettoyer la sortie si vous utilisez la fonction round(). Essayez d'utiliser pour arrondir la sortie à 4 chiffres.
1 60.0
2 36.0
3 21.6
4 12.96
5 7.776
6 4.6656
7 2.7994
8 1.6796
9 1.0078
10 0.6047
Le fragment de code suivant contient du code du problème de la tour Sears. Il y a également un bogue dedans.
## sears.py
bill_thickness = 0.11 * 0.001 ## Mètres (0.11 mm)
sears_height = 442 ## Hauteur (mètres)
num_bills = 1
day = 1
while num_bills * bill_thickness < sears_height:
print(day, num_bills, num_bills * bill_thickness)
day = days + 1
num_bills = num_bills * 2
print('Nombre de jours', day)
print('Nombre de billets', num_bills)
print('Hauteur finale', num_bills * bill_thickness)
Copiez et collez le code ci-dessus dans un nouveau programme appelé sears.py. Lorsque vous exécutez le code, vous obtiendrez un message d'erreur qui fera planter le programme comme ceci :
Traceback (most recent call last):
File "sears.py", line 10, in <module>
day = days + 1
NameError: name 'days' is not defined
La lecture des messages d'erreur est une partie importante du code Python. Si votre programme plante, la dernière ligne du message de traceback est la véritable raison pour laquelle le programme est tombé en panne. Au-dessus de cela, vous devriez voir un fragment de code source puis un nom de fichier et un numéro de ligne identifiants.
Félicitations ! Vous avez terminé le laboratoire A First Program. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.