{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "VTwt5Ltk-IYz"
   },
   "source": [
    "**Cours:** 420-SN1-RK - Programmation en sciences<br/>\n",
    "**Session:** Automne 2026<br/>\n",
    "**Groupe:** 120XX<br/>\n",
    "**Pondération:** 3%<br/>\n",
    "\n",
    "# Laboratoire #1 - Introduction à Python\n",
    "\n",
    "## Objectifs\n",
    "\n",
    "- S'initier à l'algorithmique\n",
    "- S'initier au langage de programmation Python\n",
    "- Jouer à **Réfléchir™**\n",
    "\n",
    "Répondez à la série d'exercices suivante, en inscrivant votre code et vos réponses dans les blocs prévus à ces fins."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> ### 🔁 Retour sur le laboratoire : les erreurs les plus fréquentes\n",
    ">\n",
    "> **1. L'indication de type absente ou remplacée par une conversion** (exercice 1, chez 10 personnes)\n",
    "> `int(10)` ou `float(4.2)` convertit une valeur, ça n'indique pas le type de la variable. L'indication de type s'écrit après le nom, avec un deux-points.\n",
    "> Correct : `mon_chiffre : int = 10` et `quatre_point_deux : float = 4.2`\n",
    ">\n",
    "> **2. La valeur booléenne « vrai » écrite `\"vrai\"` ou `vrai`** (exercice 1, chez 9 personnes)\n",
    "> `\"vrai\"` est une chaîne de caractères et `vrai` est un nom inconnu (la cellule plante). En Python, vrai s'écrit `True`, avec la majuscule.\n",
    "> Correct : `variable_booleenne : bool = True`\n",
    ">\n",
    "> **3. Des variables oubliées dans le programme fourni** (exercice 2, chez 9 personnes)\n",
    "> « À tous les endroits où c'est possible » veut dire les quatre variables : `naissance` et `phrase` aussi, pas seulement `nom` et `age`. Et `str(input(...))` est une conversion, pas une indication de type.\n",
    "> Correct : `nom : str = input(...)`, `naissance : int = int(input(...))`, `age : int = 2026 - naissance`, `phrase : str = f\"...\"`\n",
    ">\n",
    "> **4. Une valeur écrite en dur au lieu d'être demandée** (exercices 3 à 6, chez 5 personnes)\n",
    "> `temperature = 20` donne toujours le même résultat : l'énoncé dit « demande à l'utilisateur », donc `input()`, converti avec `float()` pour une valeur qui peut avoir des décimales.\n",
    "> Correct : `celsius : float = float(input(\"Entrez une température en Celsius: \"))`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## 1. Déclarations de variables\n",
    "\n",
    "En utilisant l'**indication de type**, déclarer les 5 variables suivantes:\n",
    "1. Une variable nommée `mon_chiffre` qui contient une valeur numérique entière quelconque.\n",
    "2. Une variable nommée `mon_nom` qui contient votre nom.\n",
    "3. Une variable nommée `variable_booleenne` qui contient la valeur booléenne \"vrai\".\n",
    "4. Une variable nommée `quatre_point_deux` qui contient la valeur numérique flottante `4.2`.\n",
    "5. Une variable nommée `fois_deux` qui contient le produit de `mon_chiffre` et de la valeur `2`.\n",
    "\n",
    "### Note\n",
    "Il est normal qu'un tel programme ne produise rien lors de son exécution, puisqu'aucune utilisation de `input()` ni de `print()` n'est demandée."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## 2. Indication des types\n",
    "Modifier le programme suivant pour qu'il fasse usage de l'**indication de type** à tous les endroits où c'est possible."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "nom = input(\"Quel est votre nom? \")\n",
    "naissance = int(input(\"En quelle année êtes-vous né? \"))\n",
    "\n",
    "age = 2026 - naissance\n",
    "phrase = f\"Bonjour {nom}, vous avez {age} ans.\"\n",
    "\n",
    "print(phrase)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Ruj8FcxH2DQf"
   },
   "source": [
    "---\n",
    "## 3. Conversion de température\n",
    "\n",
    "Écrire un programme qui demande à l'utilisateur de saisir une température en degrés Celsius et qui la convertit en Fahrenheit avant de l'afficher à l'écran.\n",
    "\n",
    "#### Exemple de résultat\n",
    "\n",
    "```text\n",
    "Entrez une température en Celsius: 20\n",
    "Cette température en Fahrenheit: 68\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "rcPoSKYh4RTl"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "# 4. Calcul du carré et du cube d'un nombre\n",
    "\n",
    "Écrivez un programme qui demande à l'utilisateur d'entrer un nombre, puis affiche le carré et le cube de ce nombre.\n",
    "\n",
    "#### Exemple d'affichage\n",
    "\n",
    "```text\n",
    "Entrez un nombre : 9\n",
    "Le carré de 9 est 81\n",
    "Le cube de 9 est 729\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## 5. Calculer l'aire d'un triangle rectangle\n",
    "\n",
    "Écrivez un programme qui demande la base et la hauteur d'un triangle, puis en affiche l'aire.\n",
    "\n",
    "#### Exemple d'affichage\n",
    "\n",
    "```text\n",
    "Entrez la base: 3\n",
    "Entrez la hauteur: 6\n",
    "\n",
    "L'aire du rectangle est de 9\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "EGFYNcwH4Tk0"
   },
   "source": [
    "---\n",
    "## 6. Calcul du prix avec taxes de vente\n",
    "\n",
    "Écrire un programme qui demande à l'utilisateur d'entrer un prix hors taxe d'un article, et qui calcule et affiche le prix TTC (toutes taxes comprises) en ajoutant une TPS de 5% et une TVQ de 9.975%. On demande à ce que les quatre montants soient affichés:\n",
    "- Le prix hors taxes\n",
    "- Le montant de la TPS\n",
    "- Le montant de la TVQ\n",
    "- Le prix toutes taxes comprises\n",
    "\n",
    "### Astuce\n",
    "Pour arrondir un nombre à virgule flottante lors de son affichage, il est possible d'utiliser une chaîne formattée avec l'addition de `:.Xf` suite à l'intégration de la valeur, où `X` est le nombre de décimales désirés. Par exemple:\n",
    "```python\n",
    "montant : float = 1.23456789f\n",
    "print(f\"Nombre: {montant}\")     # Ceci affiche 1.23456789\n",
    "print(f\"Nombre: {montant:.2f}\") # Ceci affiche 1.23\n",
    "```\n",
    "\n",
    "#### Exemple d'affichage\n",
    "\n",
    "```text\n",
    "Quel est le montant de votre achat? 299.99\n",
    "TPS   = 15.00 $\n",
    "TVQ   = 29.92 $\n",
    "Total = 344.91 $\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "hZk4UYmb494d"
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "provenance": [
    {
     "file_id": "13e1oYIPk5WzBIjEbx3j6cgEM-J2h107p",
     "timestamp": 1724678203159
    }
   ]
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.14.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
