{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

Activité 1 - Bases du langage Python

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Sommaire

\n", "
    \n", "
  1. \n", " Nombres et calculs\n", "
  2. \n", "
  3. \n", " Variables et affectations\n", "
  4. \n", "
  5. \n", " Chaînes de caractères\n", "
  6. \n", "
  7. \n", " Saisie de l'entrée utilisateur\n", "
  8. \n", "
  9. \n", " Résumé\n", "
  10. \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

On présente ici les bases du langage Python : calculs, variables, affichage, saisie, type de données.\n", "Les fonctionnalités un peu plus avancées telles que les instructions conditionnelles, les boucles, les fonctions ou les listes seront étudiées dans les chapitres suivants.

\n", "

Le langage Python a été créé par le néerlandais Guido van Rossum en 1991.
\n", " Il existe de nombreux langages de programmation (voir ce site qui indique la popularité des langages au cours du temps). Parmi les avantages du langage Python, on peut citer :

\n", "\n", "

Si le langage Python n'avait que des avantages, les autres langages concurrents auraient disparu. Le principal défaut de Python est sa relative lenteur par rapport à d'autres langages comme C/C++ ou Java. La vérification des types peut aussi poser quelques problèmes au niveau de la fiabilité des programmes (pas de compilation préalable donc détection de certaines erreurs au moment de l'exécution seulement) et de la maintenance. Enfin ce langage est peu adapté à la programmation sur smartphone.

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

1- Nombres et calculs

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python permet d'effectuer tout type de calcul, comme une calculatrice ordinaire." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true, "trusted": false }, "outputs": [], "source": [ "5 + 8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les règles de priorité des calculs sont les mêmes qu'en mathématiques. On utilise des parenthèses lorsqu'on a besoin de changer l'ordre de priorité. Le symbole de la multiplication est * (afin qu'il n'y ait pas de confusion avec la lettre x)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 1 : Dans une école, il y a trois classes :
\n", "Chaque élève de l'école doit recevoir 192 photocopies.
\n", "Combien faut-il prévoir de photocopies en tout ?\n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Une des particularités du langage Python est que le nombre de chiffres n'est pas limité pour les nombres entiers." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 2 : Calculer le produit de deux nombres à 10 chiffres. \n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pour calculer une puissance, on utilise la notation ** . Par exemple pour calculer 7 au carré, on écrira 7**2." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 3 : Calculer 6 au cube de deux manières différentes : en utilisant une puissance et sans utiliser de puissance. \n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Types numériques" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il existe deux types de nombres en Python : les entiers (int, abréviation de \"integer\") et les flottants (float, abréviation de \"floating number\" qui signifie \"nombre à virgule flottante\")." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La fonction type() indique le type du nombre qu'on lui donne en paramètre :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "type(5)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "type(5.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**La division**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il existe deux types de division en Python : la division entière avec l'opérateur // et la division flottante avec l'opérateur / .
\n", "L'opérateur % permet d'obtenir le reste dans une division entière." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "13 // 5" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "13 / 5" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "13 % 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 4 : En utilisant les opérateurs précédents, écrire 437 secondes au format minutes:secondes.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nombre de minutes :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nombre de secondes :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nombres aléatoires" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Les fonctions concernant les nombres aléatoires ne font pas partie des fonctions de base du langage Python. Pour pouvoir les utiliser, on doit commencer par donner l'accès à une bibliothèque de fonctions appelée random (\"random\" signifie \"aléatoire\") au moyen de l'instruction import random.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "import random" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "random.randint(4,7) # Ceci renvoie un entier choisi au hasard entre 4 et 7 inclus" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut aussi importer toutes les fonctions de la bibliothèque random d'un seul coup, ce qui permet d'éviter d'écrire le préfixe random. lorsqu'on utilise une de ces fonctions :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "from random import *\n", "randint(2,9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 5 : Simuler le lancer de deux dés et afficher la somme obtenue.\n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La fonction random() renvoie une nombre aléatoire compris entre 0 et 1, de type float :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "random() # nombre aléatoire compris entre 0 et 1 " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "random() * 8 # nombre aléatoire compris entre 0 et 8 (de type float)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

2- Variables et affectations

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les **variables** permettent de stocker des données (nombre ou résultat d'un calcul) en mémoire." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "a = 2 # on affecte la valeur 2 à la variable a\n", "b = 5\n", "c = a + b\n", "a = 3\n", "c" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le contenu des variables persiste en mémoire :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Afficher une variable qui n'a pas encore été définie ou déclarée provoque une erreur :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "d" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 6 : Ecrire un algorithme qui échange le contenu des variables a et b ci-dessous (trois lignes à compléter).\n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "a = 7\n", "b = 4\n", "...\n", "...\n", "..." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "a" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 7 : Quel est le rôle de l'algorithme ci-dessous ? Prouvez-le!
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "a = 7\n", "b = 4\n", "a = a + b\n", "b = a - b\n", "a = a - b" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "a" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Syntaxe abrégée**
\n", "On a souvent besoin d'**incrémenter** une variable (augmenter sa valeur de 1) ou de la décrémenter (diminuer sa valeur de 1).
\n", "Au lieu d'écrire a = a + 1, on peut écrire de façon plus courte : a += 1.
\n", "Cette syntaxe raccourcie fonctionne pour n'importe quelle valeur de l'incrément, ainsi que pour les opérateurs + , - , *, / , // et %." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 8 : En utilisant la syntaxe abrégée, ajouter 37 à la variable a ci-dessous, puis multiplier sa valeur par 2.
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "a = 9\n", "...\n", "..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

3- Chaînes de caractères

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

La fonction print() permet d'afficher une chaîne de caractères (\"string\" en anglais).\n", "La chaîne de caractère que l'on souhaite afficher doit être écrite entre guillemets (simples ' double \" ou triples '''). Sans guillemets, c'est le contenu de la variable dont le nom est transmis en paramètre qui sera affiché.

" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "bonjour = 8\n", "print(\"bonjour\")\n", "print(bonjour)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 9 : Ecrire une ligne de programme qui affiche le message \"Au revoir!\". \n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "trusted": true }, "source": [ "Une variable peut contenir une chaîne de caractères :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "message = \"coucou\"\n", "print(message)\n", "type(message)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut afficher plusieurs chaînes de caractères à l'aide d'une seule instruction print(). Par défaut, un espace sera inséré entre chaque chaîne :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "age = 32\n", "print(\"Vous avez\",age,\"ans.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plutôt qu'un espace, on peut insérer :\n", "* un autre caractère (par exemple un point-virgule)\n", "* plusieurs caractères (par exemple \" et \")\n", "* aucun caractère (les chaînes seront \"collées\")\n", "* un saut de ligne (que l'on écrit \"\\n\", et qui signifie \"new line\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "print(\"Victor\",\"Léa\",\"Ninon\",sep=\";\") # le séparateur sera le caractère point-virgule (;)\n", "print(\"Victor\",\"Léa\",\"Ninon\",sep=\" et \")\n", "print(\"Victor\",\"Léa\",\"Ninon\",sep=\"\") # aucun sépérateur, pas même un espace\n", "print(\"Victor\",\"Léa\",\"Ninon\",sep=\"\\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 10 : Ecrire une instruction qui affiche une liste de courses séparées par un tiret. \n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si on ne souhaite pas passer à la ligne suivante pour la prochaine instruction print, on peut l'indiquer au moyen du paramètre end=\"\" :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "print(\"Victor\")\n", "print(\"Léa\")\n", "print(\"Ninon\")\n", "print(\"Victor\",end=\"\")\n", "print(\"Léa\",end=\"\")\n", "print(\"Ninon\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut **concaténer** (fusionner) plusieurs chaînes de caractère au moyen de l'opérateur + :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "message1 = \"Bonjour \"\n", "message2 = \"Madame\"\n", "message3 = message1 + message2\n", "print(message3)\n", "message3 += \"!\" # la syntaxe abrégée fonctionne aussi pour la concaténation de chaînes de caractères\n", "print(message3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On ne peut pas concaténer une chaîne de caractères avec une valeur numérique directement. Il faut au préalable transformer la valeur numérique en chaîne de caractères au moyen de la fonction str() :" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "trusted": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "J'ai 25 ans.\n" ] } ], "source": [ "âge = 25\n", "début = \"J'ai \"\n", "fin = \" ans.\"\n", "phrase = début + str(âge) + fin\n", "print(phrase)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

4- Saisie de l'entrée utilisateur

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On peut demander à l'utilisateur de saisir une valeur avec la fonction input(). La valeur renvoyée par la fonction input() est du type **chaîne de caractères** (string). On peut ajouter en paramètre facultatif un message qui donne des précisions sur la valeur attendue :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "a = input()\n", "b = input(\"Entrez votre âge : \")\n", "print(a)\n", "print(b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si on souhaite utiliser la valeur saisie pour effectuer des calculs, on doit d'abord convertir cette chaîne en **entier** avec la fonction int() ou en **flottant** avec la fonction float() :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "réponse = input(\"Veuillez entrer votre âge :\")\n", "âge = int(réponse)\n", "âge += 5\n", "print(\"Dans 5 ans, vous aurez\",âge,\"ans\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Exercice 11 : Ecrire un programme qui demande à l'utilisateur d'entrer le rayon d'un cercle et qui affiche son périmètre.
\n", "Le programme doit fonctionner pour des valeurs non entières du rayon, et devra afficher une phrase de réponse complète se terminant par un point.\n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "trusted": false }, "outputs": [], "source": [ "import math\n", "math.pi # Ceci renvoie le nombre pi\n" ] }, { "cell_type": "markdown", "metadata": { "trusted": true }, "source": [ "
\n", " \n", "

Résumé

\n", " \n", "

Opérations mathématiques

\n", "Multiplication : *
\n", "Division ordinaire : /
\n", "Division entière : //
\n", "Reste (modulo) : %
\n", "Puissance : ** (exemple : 2**3 pour \"2 au cube\")\n", "\n", "

Types de variables

\n", "int (integer) : nombre entier
\n", "float (flottant) : nombre à virgule
\n", "str (string) : chaîne de caractères\n", "\n", "

Incrémenter une variable

\n", " a = a + 1
\n", "Syntaxe abrégée : a += 1
\n", "Concaténation de chaînes : \"bon\" + \"jour\" donne \"bonjour\"\n", "\n", "

Affichage

\n", "Fonction print()
\n", "On peut rajouter des paramètres sep (séparateur) et end (fin).
\n", "Exemple : print(\"a\",\"b\",\"cd\",sep=\"-\",end=\"@\") donne\n", " a-b-cd@\n", " \n", "

Saisie utilisateur

\n", "réponse = input(\"Saisissez une valeur : \")
\n", " (la réponse est une chaîne de caractères) \n", " \n", "

Changer le type d'une variable

\n", "int(chaine) : transforme une chaîne de caractère en int
\n", "float(chaine) : transforme une chaîne en float
\n", "str(nombre) : transforme un nombre en chaîne de caractères\n", " \n", "

Nombres aléatoires

\n", " module random
\n", "randint(a,b) : renvoie un nombre entier aléatoire entre a et b (inclus).
\n", "
" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 2 }